[ctypes-commit] ctypes/source _ctypes.c,1.201,1.202
Brought to you by:
theller
From: Thomas H. <th...@us...> - 2005-01-28 16:20:45
|
Update of /cvsroot/ctypes/ctypes/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16765 Modified Files: _ctypes.c Log Message: Manage the 'checker' attribute of CFuncPtr object, and pass it to _CallProc. Index: _ctypes.c =================================================================== RCS file: /cvsroot/ctypes/ctypes/source/_ctypes.c,v retrieving revision 1.201 retrieving revision 1.202 diff -C2 -d -r1.201 -r1.202 *** _ctypes.c 26 Jan 2005 12:22:50 -0000 1.201 --- _ctypes.c 28 Jan 2005 16:20:08 -0000 1.202 *************** *** 2126,2132 **** --- 2126,2135 ---- CFuncPtr_set_restype(CFuncPtrObject *self, PyObject *ob) { + PyObject *checker; if (ob == NULL) { Py_XDECREF(self->restype); self->restype = NULL; + Py_XDECREF(self->checker); + self->checker = NULL; return 0; } *************** *** 2139,2142 **** --- 2142,2151 ---- Py_INCREF(ob); self->restype = ob; + checker = PyObject_GetAttrString(ob, "_check_retval_"); + if (checker == NULL) { + PyErr_Clear(); + return 0; + } + self->checker = checker; return 0; } *************** *** 2437,2440 **** --- 2446,2450 ---- PyObject *restype; PyObject *converters; + PyObject *checker; StgDictObject *dict = PyObject_stgdict((PyObject *)self); #ifdef MS_WIN32 *************** *** 2446,2449 **** --- 2456,2460 ---- restype = self->restype ? self->restype : dict->restype; converters = self->converters ? self->converters : dict->converters; + checker = self->checker; #ifdef MS_WIN32 *************** *** 2516,2520 **** dict->flags, converters, ! restype); Py_DECREF(a); return result; --- 2527,2532 ---- dict->flags, converters, ! restype, ! checker); Py_DECREF(a); return result; *************** *** 2526,2530 **** dict->flags, converters, ! restype); } --- 2538,2543 ---- dict->flags, converters, ! restype, ! checker); } *************** *** 2534,2537 **** --- 2547,2551 ---- Py_VISIT(self->callable); Py_VISIT(self->restype); + Py_VISIT(self->checker); Py_VISIT(self->argtypes); Py_VISIT(self->converters); *************** *** 2549,2552 **** --- 2563,2569 ---- self->restype = NULL; + Py_XDECREF(self->checker); + self->checker = NULL; + Py_XDECREF(self->argtypes); self->argtypes = NULL; |