Getting System error with PyModule_AddIntConstant funtion

MathanK switch2mathan at gmail.com
Tue May 18 13:31:06 EDT 2010


I checked for Null also. But No change in the result. Still getting the system error.
But when i m calling only c.c(5) function and not calling c.path("hi python c api") function, i m getting proper output without any system error.
Any clue? 
 
 Subject: Re: Getting System error with PyModule_AddIntConstant funtion
 From: Philip Semanchuk <philip at semanchuk.com>
 Date: Tue, 18 May 2010 11:50:46 -0400
 To: "python-list (General)" <python-list at python.org>
 
 ------------------------- Contents -------------------------
 
 
 On May 18, 2010, at 11:41 AM, MathanK wrote: 
 
 > Following is a Python C api which runs properly without 
 > PyModule_AddIntConstant function. 
 > 
 > 
 > But when PyModule_AddIntConstant() function is used, getting the 
 > following error when i call 
 > c. path("test call"); 
 > " SystemError: NULL result without error in PyObject_Call " 
 
 Hi Mathan, 
 You're not checking the return code from PyModule_Create(). Is it 
 returning NULL? 
 
 Also, there's a list specific to Python's C API. You might get a 
 better response to your question there: 
 http://mail.python.org/mailman/listinfo/capi-sig 
 
 
 bye 
 Philip 
 
 
 > 
 > 
 > Python C api- c.c 
 > 
 > 
 > int test(int a){ 
 > return (2*a+a); 
 > } 
 > 
 > 
 > PyObject* dict = NULL; 
 > 
 > 
 > static PyObject* path(PyObject* self, PyObject* args) { 
 > char *cpath; 
 > PyUnicodeObject *path; 
 > PyUnicodeObject *test; 
 > 
 > 
 > if (!PyArg_ParseTuple(args, "s", &amp;path)) 
 > return NULL; 
 > cpath = (char *)path; 
 > test = (PyUnicodeObject*)(cpath); 
 > PyObject *testDict = PyDict_New(); 
 > int testVal = PyDict_SetItem(testDict, (PyObject 
 > *)PyUnicode_FromString(cpath), (PyObject 
 > *)PyUnicode_FromString(cpath)); 
 > 
 > return Py_BuildValue("s", test); 
 > } 
 > static PyObject* c(PyObject* self, PyObject* args) { 
 > 
 > int a; 
 > int result; 
 > if(!PyArg_ParseTuple(args, "i", &amp;a)) 
 > return NULL; 
 > result = test(a); 
 > return Py_BuildValue("i", result); 
 > 
 > } 
 > 
 > 
 > static PyMethodDef cmethods[] = { 
 > {"c", c, METH_VARARGS, "watch"}, 
 > {"path", path, METH_VARARGS, "test"}, 
 > {NULL, NULL, 0, NULL}, 
 > }; 
 > 
 > 
 > static struct PyModuleDef c_Module = { 
 > PyModuleDef_HEAD_INIT, 
 > "c", 
 > ( 
 > "Interface." 
 > ), 
 > -1, 
 > cmethods 
 > }; 
 > 
 > 
 > PyMODINIT_FUNC PyInit_c(void) { 
 > 
 > PyObject* obj = PyModule_Create(&amp;c_Module); 
 > long lon1 = 0; 
 > PyModule_AddIntConstant(obj, "test", lon1); 
 > 
 > } 
 > 
 > 
 > int main(int argc, wchar_t *argv[]) 
 > { 
 > PyImport_AppendInittab("c", PyInit_c); 
 > Py_SetProgramName(argv[0]); 
 > Py_Initialize(); 
 > PyImport_ImportModule("c"); 
 > return 0; 
 > }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100518/486f82c2/attachment.html>


More information about the Python-list mailing list