[cig-commits] r9222 - mc/3D/CitcomS/trunk/module/Exchanger
tan2 at geodynamics.org
tan2 at geodynamics.org
Mon Feb 4 15:13:23 PST 2008
Author: tan2
Date: 2008-02-04 15:13:23 -0800 (Mon, 04 Feb 2008)
New Revision: 9222
Modified:
mc/3D/CitcomS/trunk/module/Exchanger/exchangers.cc
Log:
Fixed bugs in managing reference counts and potential double-free
Modified: mc/3D/CitcomS/trunk/module/Exchanger/exchangers.cc
===================================================================
--- mc/3D/CitcomS/trunk/module/Exchanger/exchangers.cc 2008-02-04 22:32:22 UTC (rev 9221)
+++ mc/3D/CitcomS/trunk/module/Exchanger/exchangers.cc 2008-02-04 23:13:23 UTC (rev 9222)
@@ -67,8 +67,9 @@
BoundedBox* bbox = const_cast<BoundedBox*>(&(b->bbox()));
PyObject *cobj1 = PyCObject_FromVoidPtr(b, deleteBoundary);
- PyObject *cobj2 = PyCObject_FromVoidPtr(bbox, deleteBoundedBox);
- return Py_BuildValue("OO", cobj1, cobj2);
+ /* the memory of bbox is managed by b, no need to call its d'ctor */
+ PyObject *cobj2 = PyCObject_FromVoidPtr(bbox, NULL);
+ return Py_BuildValue("NN", cobj1, cobj2);
}
@@ -80,7 +81,7 @@
Boundary* b = new Boundary();
PyObject *cobj = PyCObject_FromVoidPtr(b, deleteBoundary);
- return Py_BuildValue("O", cobj);
+ return Py_BuildValue("N", cobj);
}
@@ -92,7 +93,7 @@
Interior* b = new Interior();
PyObject *cobj = PyCObject_FromVoidPtr(b, deleteInterior);
- return Py_BuildValue("O", cobj);
+ return Py_BuildValue("N", cobj);
}
@@ -122,7 +123,7 @@
bbox->print("CitcomS-GlobalBBox");
PyObject *cobj = PyCObject_FromVoidPtr(bbox, deleteBoundedBox);
- return Py_BuildValue("O", cobj);
+ return Py_BuildValue("N", cobj);
}
@@ -144,8 +145,9 @@
BoundedBox* bbox = const_cast<BoundedBox*>(&(i->bbox()));
PyObject *cobj1 = PyCObject_FromVoidPtr(i, deleteInterior);
- PyObject *cobj2 = PyCObject_FromVoidPtr(bbox, deleteBoundedBox);
- return Py_BuildValue("OO", cobj1, cobj2);
+ /* the memory of bbox is managed by i, no need to call its d'ctor */
+ PyObject *cobj2 = PyCObject_FromVoidPtr(bbox, NULL);
+ return Py_BuildValue("NN", cobj1, cobj2);
}
@@ -233,7 +235,7 @@
CitcomSource* source = new CitcomSource(comm, sinkRank, *b, *bbox, E);
PyObject *cobj = PyCObject_FromVoidPtr(source, deleteCitcomSource);
- return Py_BuildValue("O", cobj);
+ return Py_BuildValue("N", cobj);
}
More information about the cig-commits
mailing list