aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/py/source/clmeth.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/py/source/clmeth.cpp')
-rw-r--r--externals/grill/py/source/clmeth.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/externals/grill/py/source/clmeth.cpp b/externals/grill/py/source/clmeth.cpp
index 3f856f57..a8e1ceb7 100644
--- a/externals/grill/py/source/clmeth.cpp
+++ b/externals/grill/py/source/clmeth.cpp
@@ -124,6 +124,10 @@ PyObject* pyext::pyext_getattr(PyObject *,PyObject *args)
pyext *ext = GetThis(self);
if(ext)
ret = PyLong_FromLong(ext->shouldexit?1:0);
+ else {
+ Py_INCREF(Py_True);
+ ret = Py_True;
+ }
}
// post("pyext::getattr %s",sname);
}
@@ -188,23 +192,20 @@ PyObject *pyext::pyext_outlet(PyObject *,PyObject *args)
ext->ToOutList(o-1,lst);
else
ext->ToOutAtom(o-1,*lst.Atoms());
+ ok = true;
}
else
- post("pyext: outlet index out of range");
-
- ok = true;
+ PyErr_SetString(PyExc_ValueError,"pyext - _outlet: index out of range");
}
else
- post("py/pyext - No data to send");
+ PyErr_SetString(PyExc_ValueError,"pyext - _outlet: invalid arguments");
if(!tp) Py_DECREF(val);
}
-
- if(!ok) {
+ else
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outlet(self,outlet,args...)");
- return NULL;
- }
+ if(!ok) return NULL;
Py_INCREF(Py_None);
return Py_None;
}
@@ -219,12 +220,16 @@ PyObject *pyext::pyext_detach(PyObject *,PyObject *args)
int val;
if(!PyArg_ParseTuple(args, "Oi:pyext_detach",&self,&val)) {
// handle error
- PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1])");
+ PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1/2])");
+ return NULL;
+ }
+ else if(val < 0 || val > 2) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _detach must be in the range 0..2");
return NULL;
}
else {
pyext *ext = GetThis(self);
- ext->detach = val != 0;
+ ext->detach = val;
}
Py_INCREF(Py_None);
@@ -241,6 +246,10 @@ PyObject *pyext::pyext_stop(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _stop(self,{wait time})");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _stop time must be >= 0");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
int cnt;
@@ -332,6 +341,10 @@ PyObject *pyext::pyext_invec(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _invec(self,inlet)");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _invec: index out of range");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
PyObject *b = ext->GetSig(val,true);
@@ -351,6 +364,10 @@ PyObject *pyext::pyext_outvec(PyObject *,PyObject *args)
PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outvec(self,inlet)");
return NULL;
}
+ else if(val < 0) {
+ PyErr_SetString(PyExc_ValueError,"pyext - _outvec: index out of range");
+ return NULL;
+ }
else {
pyext *ext = GetThis(self);
PyObject *b = ext->GetSig(val,false);