[Python-checkins] python/dist/src/Modules structmodule.c,2.61,2.62

arigo at users.sourceforge.net arigo at users.sourceforge.net
Mon Sep 27 21:27:53 CEST 2004


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22138/Modules

Modified Files:
	structmodule.c 
Log Message:
Patch #1011240: SystemError generated by struct.pack('P', 'foo').



Index: structmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/structmodule.c,v
retrieving revision 2.61
retrieving revision 2.62
diff -u -d -r2.61 -r2.62
--- structmodule.c	19 Nov 2003 22:52:23 -0000	2.61
+++ structmodule.c	27 Sep 2004 19:27:51 -0000	2.62
@@ -518,14 +518,16 @@
 static int
 np_void_p(char *p, PyObject *v, const formatdef *f)
 {
-	void *x = PyLong_AsVoidPtr(v);
-	if (x == NULL && PyErr_Occurred()) {
-		/* ### hrm. PyLong_AsVoidPtr raises SystemError */
-		if (PyErr_ExceptionMatches(PyExc_TypeError))
-			PyErr_SetString(StructError,
-					"required argument is not an integer");
+	void *x;
+
+	v = get_pylong(v);
+	if (v == NULL)
+		return -1;
+	assert(PyLong_Check(v));
+	x = PyLong_AsVoidPtr(v);
+	Py_DECREF(v);
+	if (x == NULL && PyErr_Occurred())
 		return -1;
-	}
 	memcpy(p, (char *)&x, sizeof x);
 	return 0;
 }



More information about the Python-checkins mailing list