Browse Source

Fixed a memory leak in python CPP implementation.

liujisi@google.com 14 years ago
parent
commit
e8e6eed0be
1 changed files with 3 additions and 1 deletions
  1. 3 1
      python/google/protobuf/pyext/python-proto2.cc

+ 3 - 1
python/google/protobuf/pyext/python-proto2.cc

@@ -1099,10 +1099,12 @@ static PyObject* CMessage_AssignRepeatedScalar(CMessage* self, PyObject* args) {
   PyObject* next;
   PyObject* next;
   while ((next = PyIter_Next(iter)) != NULL) {
   while ((next = PyIter_Next(iter)) != NULL) {
     if (InternalAddRepeatedScalar(
     if (InternalAddRepeatedScalar(
-        message, cfield_descriptor->descriptor, next) == NULL) {
+            message, cfield_descriptor->descriptor, next) == NULL) {
+      Py_DECREF(next);
       Py_DECREF(iter);
       Py_DECREF(iter);
       return NULL;
       return NULL;
     }
     }
+    Py_DECREF(next);
   }
   }
   Py_DECREF(iter);
   Py_DECREF(iter);
   Py_RETURN_NONE;
   Py_RETURN_NONE;