23 Feb
2009
23 Feb
'09
1:45 a.m.
Still not sure why this happens. Did a test with a small C/Python file that just runs external scripts, with compiling AND running as a string I don't print gibberish.
So for now I added this to our own warning function...
// import sys; print '\t%s:%d' %
(sys._getframe(0).f_code.co_filename, sys._getframe(0).f_lineno)
PyObject *getframe, *frame;
PyObject *f_lineno, *f_code, *co_filename;
getframe = PySys_GetObject("_getframe"); // borrowed
if (getframe) {
frame = PyObject_CallObject(getframe, NULL);
if (frame) {
f_lineno= PyObject_GetAttrString(frame,
"f_lineno"); f_code= PyObject_GetAttrString(frame, "f_code"); if (f_lineno && f_code) { co_filename= PyObject_GetAttrString(f_code, "co_filename"); if (co_filename) {
printf("\t%s:%d\n",
PyString_AsString(co_filename),(int)PyInt_AsLong(f_lineno));
Py_DECREF(f_lineno);
Py_DECREF(f_code);
Py_DECREF(co_filename);
Py_DECREF(frame);
return;
}
}
Py_XDECREF(f_lineno);
Py_XDECREF(f_code);
Py_DECREF(frame);
}
}
PyErr_Clear();
printf("\tERROR - Could not access
sys._getframe(0).f_lineno or sys._getframe().f_code.co_filename\n");