Hi Gustavo,
I checked out your latest need-for-speed-revenge branch, and had two
immediate problems:
* the test suite segfaulted in Compile__call__()
* the extension would not compile with Python 2.4
Attached is a bundle that fixes both issues.
James.
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# target_branch: bzr+ssh://[EMAIL PROTECTED]/%7Eniemeyer\
# /storm/need-for-speed-revenge/
# testament_sha1: b1bc893f9b035ed590fa93bffe3eebc57f21b032
# timestamp: 2008-06-19 11:16:28 +0800
# base_revision_id: [EMAIL PROTECTED]
# iww2kewacv2ux78v
#
# Begin patch
=== modified file 'storm/cextensions.c'
--- storm/cextensions.c 2008-06-18 23:13:04 +0000
+++ storm/cextensions.c 2008-06-19 03:11:36 +0000
@@ -47,6 +47,56 @@
} while(0)
+/* Python 2.4 does not include the PySet_* API, so provide a minimal
+ implementation for the calls we care about. */
+#if PY_VERSION_HEX < 0x02050000 && !defined(PySet_GET_SIZE)
+# define PySet_GET_SIZE(so) \
+ ((PyDictObject *)((PySetObject *)so)->data)->ma_used
+static PyObject *
+PySet_New(PyObject *p)
+{
+ return PyObject_CallObject((PyObject *)&PySet_Type, NULL);
+}
+
+static int
+PySet_Add(PyObject *set, PyObject *key)
+{
+ PyObject *dict;
+
+ if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) {
+ PyErr_BadInternalCall();
+ return -1;
+ }
+ dict = ((PySetObject *)set)->data;
+ return PyDict_SetItem(dict, key, Py_True);
+}
+
+static int
+PySet_Discard(PyObject *set, PyObject *key)
+{
+ PyObject *dict;
+ int result;
+
+ if (!PyType_IsSubtype(set->ob_type, &PySet_Type)) {
+ PyErr_BadInternalCall();
+ return -1;
+ }
+ dict = ((PySetObject *)set)->data;
+ result = PyDict_DelItem(dict, key);
+ if (result == 0) {
+ /* key found and removed */
+ result = 1;
+ } else {
+ if (PyErr_ExceptionMatches(PyExc_KeyError)) {
+ /* key not found */
+ PyErr_Clear();
+ result = 0;
+ }
+ }
+ return result;
+}
+#endif
+
static PyObject *Undef = NULL;
static PyObject *LazyValue = NULL;
static PyObject *raise_none_error = NULL;
@@ -1690,13 +1740,6 @@
return NULL;
}
- if (join != NULL) {
- /* We have to increase it beforehand, but handle it afterwards,
- * so that if errors happen when processing state below, reference
- * handling will work correctly. */
- Py_INCREF(join);
- }
-
if (state == Py_None) {
CATCH(NULL, state = PyObject_CallFunctionObjArgs(State, NULL));
} else {
@@ -1706,12 +1749,10 @@
result = Compile_one_or_many(self, expr, state, join, raw, token);
Py_DECREF(state);
- Py_DECREF(join);
return result;
error:
Py_XDECREF(state);
- Py_XDECREF(join);
return NULL;
}
# Begin bundle
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
--
storm mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/storm