[Pcsclite-cvs-commit] r2600 - trunk/pycsc

rousseau at alioth.debian.org rousseau at alioth.debian.org
Thu Aug 2 08:54:44 UTC 2007


Author: rousseau
Date: 2007-08-02 08:54:44 +0000 (Thu, 02 Aug 2007)
New Revision: 2600

Modified:
   trunk/pycsc/pycsc.c
Log:
avoid a memory leak in listReader()

Thanks to Dima Tisnek for the patch


Modified: trunk/pycsc/pycsc.c
===================================================================
--- trunk/pycsc/pycsc.c	2007-07-05 19:24:00 UTC (rev 2599)
+++ trunk/pycsc/pycsc.c	2007-08-02 08:54:44 UTC (rev 2600)
@@ -982,16 +982,17 @@
   mszReadersScan = mszReaders;
   while (*mszReadersScan != '\0')
   {
-    //+ Does that free memomry properly in case of error with the append
-    //+ probably Py_BuildValue("s", mszReadersScan) needs a DECREF
-    //+ and so does ret_value
-    if (PyList_Append(ret_value, Py_BuildValue("s", mszReadersScan)))
+    PyObject *tmp = Py_BuildValue("s", mszReadersScan);
+    if (PyList_Append(ret_value, tmp))
     {
       PyErr_SetString(PycscException, "Could not append reader name");
       SCardReleaseContext(hContext);  
       PyMem_Free((void *)mszReaders);
+      Py_CLEAR(tmp);
+      Py_CLEAR(ret_value);
       return NULL;
     }      
+    Py_DECREF(tmp);
     mszReadersScan += strlen(mszReadersScan)+1;
   }
   SCardReleaseContext(hContext);  




More information about the Pcsclite-cvs-commit mailing list