[Python-checkins] r80293 - python/branches/py3k/Modules/datetimemodule.c

mark.dickinson python-checkins at python.org
Wed Apr 21 01:24:25 CEST 2010


Author: mark.dickinson
Date: Wed Apr 21 01:24:25 2010
New Revision: 80293

Log:
Rework delta_divmod to avoid use of PyTuple_SetItem.

Modified:
   python/branches/py3k/Modules/datetimemodule.c

Modified: python/branches/py3k/Modules/datetimemodule.c
==============================================================================
--- python/branches/py3k/Modules/datetimemodule.c	(original)
+++ python/branches/py3k/Modules/datetimemodule.c	Wed Apr 21 01:24:25 2010
@@ -1927,7 +1927,8 @@
 	PyObject *pyus_left;
 	PyObject *pyus_right;
 	PyObject *divmod;
-	PyObject *microseconds, *delta;
+	PyObject *delta;
+	PyObject *result;
 
 	if (!PyDelta_Check(left) || !PyDelta_Check(right)) {
 		Py_INCREF(Py_NotImplemented);
@@ -1950,14 +1951,16 @@
 	if (divmod == NULL)
 		return NULL;
 
-	microseconds = PyTuple_GetItem(divmod, 1);
-	delta = microseconds_to_delta(microseconds);
+	assert(PyTuple_Size(divmod) == 2);
+	delta = microseconds_to_delta(PyTuple_GET_ITEM(divmod, 1));
 	if (delta == NULL) {
 		Py_DECREF(divmod);
 		return NULL;
 	}
-	PyTuple_SetItem(divmod, 1, delta);
-	return divmod;
+	result = PyTuple_Pack(2, PyTuple_GET_ITEM(divmod, 0), delta);
+	Py_DECREF(delta);
+	Py_DECREF(divmod);
+	return result;
 }
 
 /* Fold in the value of the tag ("seconds", "weeks", etc) component of a


More information about the Python-checkins mailing list