[Python-checkins] python/dist/src/Objects setobject.c,1.30,1.31
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Tue Nov 9 08:25:33 CET 2004
Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28891/Objects
Modified Files:
setobject.c
Log Message:
SF 1062353: set pickling problems
Support automatic pickling of dictionaries in instance of set subclasses.
Index: setobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/setobject.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- setobject.c 28 Sep 2004 01:51:34 -0000 1.30
+++ setobject.c 9 Nov 2004 07:25:28 -0000 1.31
@@ -844,7 +844,7 @@
static PyObject *
set_reduce(PySetObject *so)
{
- PyObject *keys=NULL, *args=NULL, *result=NULL;
+ PyObject *keys=NULL, *args=NULL, *result=NULL, *dict=NULL;
keys = PyDict_Keys(so->data);
if (keys == NULL)
@@ -852,10 +852,17 @@
args = PyTuple_Pack(1, keys);
if (args == NULL)
goto done;
- result = PyTuple_Pack(2, so->ob_type, args);
+ dict = PyObject_GetAttrString((PyObject *)so, "__dict__");
+ if (dict == NULL) {
+ PyErr_Clear();
+ dict = Py_None;
+ Py_INCREF(dict);
+ }
+ result = PyTuple_Pack(3, so->ob_type, args, dict);
done:
Py_XDECREF(args);
Py_XDECREF(keys);
+ Py_XDECREF(dict);
return result;
}
More information about the Python-checkins
mailing list