[Python-checkins] r60398 - python/trunk/Python/marshal.c
raymond.hettinger
python-checkins at python.org
Mon Jan 28 22:34:30 CET 2008
Author: raymond.hettinger
Date: Mon Jan 28 22:34:30 2008
New Revision: 60398
Modified:
python/trunk/Python/marshal.c
Log:
Let marshal built-up sets and frozensets one element at a time (without creating an intermediate tuple).
Modified: python/trunk/Python/marshal.c
==============================================================================
--- python/trunk/Python/marshal.c (original)
+++ python/trunk/Python/marshal.c Mon Jan 28 22:34:30 2008
@@ -860,7 +860,7 @@
retval = NULL;
break;
}
- v = PyTuple_New((int)n);
+ v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
if (v == NULL) {
retval = NULL;
break;
@@ -875,18 +875,14 @@
v = NULL;
break;
}
- PyTuple_SET_ITEM(v, (int)i, v2);
+ if (PySet_Add(v, v2) == -1) {
+ Py_DECREF(v);
+ Py_DECREF(v2);
+ v = NULL;
+ break;
+ }
}
- if (v == NULL) {
- retval = NULL;
- break;
- }
- if (type == TYPE_SET)
- v3 = PySet_New(v);
- else
- v3 = PyFrozenSet_New(v);
- Py_DECREF(v);
- retval = v3;
+ retval = (v == NULL) ? NULL : v;
break;
case TYPE_CODE:
More information about the Python-checkins
mailing list