Merged revisions 60383-60407 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r60388 | thomas.heller | 2008-01-28 09:44:13 +0100 (Mon, 28 Jan 2008) | 1 line

  Revert rev. 59925, it breaks comtypes (I need to further examine this).
........
  r60397 | raymond.hettinger | 2008-01-28 21:34:33 +0100 (Mon, 28 Jan 2008) | 5 lines

  Make PySet_Add() work with frozensets.
  Works like PyTuple_SetItem() to build-up values in a brand new frozenset.
  Also, PyFrozenSet_New() is now guaranteed to produce a distinct new frozenset.
........
  r60398 | raymond.hettinger | 2008-01-28 22:34:30 +0100 (Mon, 28 Jan 2008) | 1 line

  Let marshal built-up sets and frozensets one element at a time (without creating an intermediate tuple).
........
  r60399 | raymond.hettinger | 2008-01-28 22:47:42 +0100 (Mon, 28 Jan 2008) | 1 line

  Factor-out common code with a new macro
........
  r60400 | raymond.hettinger | 2008-01-28 22:48:07 +0100 (Mon, 28 Jan 2008) | 1 line

  Factor-out common code with a new macro
........
  r60401 | raymond.hettinger | 2008-01-28 22:51:25 +0100 (Mon, 28 Jan 2008) | 1 line

  Removed unnecessary conditional (spotted by Neal Norwitz).
........
  r60403 | gregory.p.smith | 2008-01-29 00:21:00 +0100 (Tue, 29 Jan 2008) | 4 lines

  Disable use of BerkeleyDB 4.6.x to see what the odd platform buildbots
  think.  In particular, neal norwitz has traced an Ubuntu sparc64 crash
  to the Lib/test/bsddb/test_basics.py test when opening a db with DB_THREAD.
........
  r60405 | brett.cannon | 2008-01-29 05:13:07 +0100 (Tue, 29 Jan 2008) | 2 lines

  Fix the reindent rule to use $(BUILDPYTHON).
........
  r60406 | brett.cannon | 2008-01-29 05:18:04 +0100 (Tue, 29 Jan 2008) | 3 lines

  Update Vim syntax highlighting to specify what revision was used to generate
  the file.
........
  r60407 | brett.cannon | 2008-01-29 05:20:56 +0100 (Tue, 29 Jan 2008) | 2 lines

  Ignore .pyc and .pyo files.
........
diff --git a/Python/marshal.c b/Python/marshal.c
index 4ea43da..4c0f088 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -812,7 +812,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;
@@ -827,18 +827,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;
 		break;
 
 	case TYPE_CODE: