summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2010-07-29 21:47:28 +0000
committerMark Dickinson <dickinsm@gmail.com>2010-07-29 21:47:28 +0000
commitf417ae8d4c9bb497868124098aeb2c260dd1964c (patch)
tree37720c901030e99b31d8a22f9fcd91475bbff521
parent8243ddb6ca5c0f78764a28f044f0c0284774d317 (diff)
downloadcpython-git-f417ae8d4c9bb497868124098aeb2c260dd1964c.tar.gz
Merged revisions 83241 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/release27-maint ................ r83241 | mark.dickinson | 2010-07-29 22:44:47 +0100 (Thu, 29 Jul 2010) | 9 lines Merged revisions 83239 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r83239 | mark.dickinson | 2010-07-29 22:41:59 +0100 (Thu, 29 Jul 2010) | 2 lines Issue #9422: Fix memory leak when re-initializing a struct.Struct object. ........ ................
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/_struct.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 5ce766435f..ad25699ecb 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -322,6 +322,8 @@ Library
Extension Modules
-----------------
+- Issue #9422: Fix memory leak when re-initializing a struct.Struct object.
+
- Issue #7900: The getgroups(2) system call on MacOSX behaves rather oddly
compared to other unix systems. In particular, os.getgroups() does
not reflect any changes made using os.setgroups() but basicly always
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 936e8af043..b85d106368 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -1404,6 +1404,9 @@ prepare_s(PyStructObject *self)
PyErr_NoMemory();
return -1;
}
+ /* Free any s_codes value left over from a previous initialization. */
+ if (self->s_codes != NULL)
+ PyMem_FREE(self->s_codes);
self->s_codes = codes;
s = fmt;