chiark
/
gitweb
/
~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/HEAD'
[catacomb-python]
/
util.c
diff --git
a/util.c
b/util.c
index 4e82ed628e218ef7e0ec6a34140db7a1400645e4..7118bfb7b59f64d3408bc4a533a2c7170600f1ff 100644
(file)
--- a/
util.c
+++ b/
util.c
@@
-83,6
+83,7
@@
int convulong(PyObject *o, void *pp)
unsigned long *p = pp;
PyObject *t;
unsigned long *p = pp;
PyObject *t;
+ if (!o) VALERR("can't delete");
if (PyInt_Check(o)) {
i = PyInt_AS_LONG(o);
if (i < 0) VALERR("must be nonnegative");
if (PyInt_Check(o)) {
i = PyInt_AS_LONG(o);
if (i < 0) VALERR("must be nonnegative");
@@
-132,6
+133,7
@@
int convk64(PyObject *o, void *pp)
int rc = 0;
uint32 lo, hi;
int rc = 0;
uint32 lo, hi;
+ if (!o) VALERR("can't delete");
if (init_i32()) goto end;
if ((i = PyNumber_Int(o)) == 0) goto end;
lo = PyInt_AsUnsignedLongMask(i);
if (init_i32()) goto end;
if ((i = PyNumber_Int(o)) == 0) goto end;
lo = PyInt_AsUnsignedLongMask(i);
@@
-176,8
+178,11
@@
end:
int convbool(PyObject *o, void *pp)
{
int convbool(PyObject *o, void *pp)
{
+ if (!o) VALERR("can't delete");
*(int *)pp = PyObject_IsTrue(o);
return (1);
*(int *)pp = PyObject_IsTrue(o);
return (1);
+end:
+ return (0);
}
/*----- Type messing ------------------------------------------------------*/
}
/*----- Type messing ------------------------------------------------------*/
@@
-223,9
+228,9
@@
void typeready(PyTypeObject *ty)
PyDict_SetItemString(ty->tp_dict, "__module__", modname);
}
PyDict_SetItemString(ty->tp_dict, "__module__", modname);
}
-PyTypeObject *inittype(PyTypeObject *tyskel)
+PyTypeObject *inittype(PyTypeObject *tyskel
, PyTypeObject *meta
)
{
{
- PyTypeObject *ty = newtype(
&PyType_Type
, tyskel, 0);
+ PyTypeObject *ty = newtype(
meta
, tyskel, 0);
ty->tp_flags |= Py_TPFLAGS_HEAPTYPE;
typeready(ty);
return (ty);
ty->tp_flags |= Py_TPFLAGS_HEAPTYPE;
typeready(ty);
return (ty);