[PyGreSQL] Fw: Patch to fix PyGreSQL 3.7 memory leak

D'Arcy J.M. Cain darcy at PyGreSQL.org
Thu Feb 2 15:05:27 EST 2006


The following message was sent to my email.  Anyone see a problem
implementing this?

Begin forwarded message:

While using PyGreSQL 3.7, I found a small memory leak in the C to
Python conversion for floating point types.  I've attached a
patch below.


-- 
D'Arcy J.M. Cain
PyGreSQL Development Group
http://www.PyGreSQL.org
-------------- next part --------------
diff -Naurd PyGreSQL-3.7.orig/pgmodule.c PyGreSQL-3.7/pgmodule.c
--- PyGreSQL-3.7.orig/pgmodule.c	2006-02-02 11:47:51.000000000 -0800
+++ PyGreSQL-3.7/pgmodule.c	2006-02-02 11:55:05.000000000 -0800
@@ -1823,6 +1823,7 @@
 			int			k;
 			char	   *s = PQgetvalue(self->last_result, i, j);
 			char		cashbuf[64];
+			PyObject   *float_str;
 
 			if (PQgetisnull(self->last_result, i, j))
 			{
@@ -1841,7 +1842,10 @@
 						break;
 
 					case 3:
-						val = PyFloat_FromString(PyString_FromString(s), NULL);
+						float_str = PyString_FromString(s);
+						val = PyFloat_FromString(float_str, NULL);
+						Py_DECREF(float_str);
+						float_str = NULL;
 						break;
 
 					case 4:
@@ -1945,6 +1949,7 @@
 			int			k;
 			char	   *s = PQgetvalue(self->last_result, i, j);
 			char		cashbuf[64];
+			PyObject   *float_str;
 
 			if (PQgetisnull(self->last_result, i, j))
 			{
@@ -1963,7 +1968,10 @@
 						break;
 
 					case 3:
-						val = PyFloat_FromString(PyString_FromString(s), NULL);
+						float_str = PyString_FromString(s);
+						val = PyFloat_FromString(float_str, NULL);
+						Py_DECREF(float_str);
+						float_str = NULL;
 						break;
 
 					case 4:



More information about the PyGreSQL mailing list