En Sun, 13 May 2007 17:58:17 -0300, <[EMAIL PROTECTED]> escribió: > Hi I'm getting extremely odd behavior. First of all, why isn't > PyEval_EvalCode documented anywhere? Anyway, I'm working on > blender's > python integration (it embeds python, as opposed to python embedding > it). I have a function that executes a string buffer of python code, > fetches a function from its global dictionary then calls it.
Why don't you use a documented function like PyRun_String or similar, as in the subject line? > /*Now for the fun part! Try and find the functions we need.*/ > while ( PyDict_Next(globals, &ppos, &gkey, &gval) ) { > if ( PyString_Check(gkey) && strcmp(PyString_AsString(gkey), > "doConstraint")==0 ) { > if (PyFunction_Check(gval) ) { > retval = PyObject_CallObject(gval, > Py_BuildValue("OOO", > srcmat, tarmat, idprop)); > Py_XDECREF( retval ); > } else { > printf("ERROR: doConstraint is supposed to be a > function!\n"); > } > break; > } > } I'd use PyDict_Get_Item_String (iterating over a dict just to locate a key is rather silly). And, if you are going to use the return value from PyObject_CallObject (retval), don't decref it!!! (you even decref it twice). -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list