From bad474544c777ba15c474374c4ee1ef5288fdebf Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Mon, 5 Jun 2006 00:33:35 +0000 Subject: [PATCH] fix a bug in the previous commit. don't leak empty list on error return and fix the additional rare (out of memory only) bug that it was supposed to fix of not freeing log_list when the python allocator failed. --- Modules/_bsddb.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 2df73febc2..aad4d1f3bd 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -4378,10 +4378,6 @@ DBEnv_log_archive(DBEnvObject* self, PyObject* args) if (!PyArg_ParseTuple(args, "|i:log_archive", &flags)) return NULL; - list = PyList_New(0); - if (list == NULL) - return NULL; - CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; #if (DBVER >= 40) @@ -4394,6 +4390,13 @@ DBEnv_log_archive(DBEnvObject* self, PyObject* args) MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); + list = PyList_New(0); + if (list == NULL) { + if (log_list) + free(log_list); + return NULL; + } + if (log_list) { char **log_list_start; for (log_list_start = log_list; *log_list != NULL; ++log_list) { -- 2.50.1