[capi-sig] Getting System error with PyModule_AddIntConstant funtion

MathanK switch2mathan at gmail.com
Wed May 19 09:00:37 CEST 2010


Following is a Python3.1 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 "


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", &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", &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(&c_Module);
    if (obj == NULL) 
        return NULL; 
     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;
 }


More information about the capi-sig mailing list