Added the example "thin ice" from the extensions manual.
This commit is contained in:
parent
d16ddb610a
commit
fbcfd52a9a
|
@ -185,12 +185,36 @@ xx_new(self, args)
|
||||||
return (PyObject *)rv;
|
return (PyObject *)rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Example with subtle bug from extensions manual ("Thin Ice"). */
|
||||||
|
|
||||||
|
static PyObject *
|
||||||
|
xx_bug(self, args)
|
||||||
|
PyObject *self;
|
||||||
|
PyObject *args;
|
||||||
|
{
|
||||||
|
PyObject *list, *item;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, "O", &list))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
item = PyList_GetItem(list, 0);
|
||||||
|
/* Py_INCREF(item); */
|
||||||
|
PyList_SetItem(list, 1, PyInt_FromLong(0L));
|
||||||
|
PyObject_Print(item, stdout, 0);
|
||||||
|
printf("\n");
|
||||||
|
/* Py_DECREF(item); */
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* List of functions defined in the module */
|
/* List of functions defined in the module */
|
||||||
|
|
||||||
static PyMethodDef xx_methods[] = {
|
static PyMethodDef xx_methods[] = {
|
||||||
{"foo", xx_foo, 1},
|
{"foo", xx_foo, 1},
|
||||||
{"new", xx_new, 1},
|
{"new", xx_new, 1},
|
||||||
|
{"bug", xx_bug, 1},
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue