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

Reply via email to