[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/12] Guile-DBI: Fix memory leak
From: |
Linas Vepstas |
Subject: |
[PATCH 3/12] Guile-DBI: Fix memory leak |
Date: |
Fri, 19 Sep 2008 09:06:23 -0500 |
User-agent: |
Mutt/1.5.15+20070412 (2007-04-11) |
Fix memory leak; various allocated strins are not freed
in assorted error paths.
Signed-off-by: Linas Vepstas <address@hidden>
---
src/guile-dbi.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
Index: guile-dbi-2.0.0/src/guile-dbi.c
===================================================================
--- guile-dbi-2.0.0.orig/src/guile-dbi.c 2008-09-16 20:52:25.000000000
-0500
+++ guile-dbi-2.0.0/src/guile-dbi.c 2008-09-16 20:53:13.000000000 -0500
@@ -55,12 +55,13 @@ SCM_DEFINE (make_g_db_handle, "dbi-open"
g_db_handle->handle = NULL;
g_db_handle->db_info = NULL;
- bcknd_str = (char*) gh_scm2newstr(bcknd,NULL);
+ bcknd_str = scm_to_locale_string (bcknd);
sodbd=(char*) malloc (sizeof(char)*(strlen("libguile-dbd-") +
strlen(bcknd_str) + 10));
if (sodbd == NULL)
{
+ free(bcknd_str);
g_db_handle->status = scm_cons(scm_from_int(errno),
scm_makfrom0str(strerror(errno)));
SCM_RETURN_NEWSMOB (g_db_handle_tag, g_db_handle);
@@ -70,6 +71,8 @@ SCM_DEFINE (make_g_db_handle, "dbi-open"
g_db_handle->handle = dlopen(sodbd,RTLD_NOW);
if ( g_db_handle->handle == NULL)
{
+ free(bcknd_str);
+ free(sodbd);
g_db_handle->status = scm_cons(scm_from_int(1),
scm_makfrom0str(dlerror()));
SCM_RETURN_NEWSMOB (g_db_handle_tag, g_db_handle);
@@ -78,6 +81,8 @@ SCM_DEFINE (make_g_db_handle, "dbi-open"
__gdbi_dbd_wrap(g_db_handle,(char*) __FUNCTION__,(void**) &connect);
if (scm_equal_p (SCM_CAR(g_db_handle->status),scm_from_int(0)) == SCM_BOOL_F)
{
+ free(bcknd_str);
+ free(sodbd);
SCM_RETURN_NEWSMOB (g_db_handle_tag, g_db_handle);
}
signature.asc
Description: Digital signature
- PATCH [0/12]: Guile-DBI and Guile-DBD-Postgres, Linas Vepstas, 2008/09/19
- [PATCH 1/12] Guile-DBI: Avoid multiple init, Linas Vepstas, 2008/09/19
- [PATCH 2/12] Guile-DBI: minor cleanup, Linas Vepstas, 2008/09/19
- [PATCH 3/12] Guile-DBI: Fix memory leak,
Linas Vepstas <=
- [PATCH 4/12] Guile-DBII: replace deprecated gh_ functions, Linas Vepstas, 2008/09/19
- [PATCH 6/12] Guile-DBI: Fix crash, avoid recursive free, Linas Vepstas, 2008/09/19
- [PATCH 5/12] Guile-DBI: Use remember_upto_here, Linas Vepstas, 2008/09/19
- [PATCH 7/12] Guile-DBI: Don't cast away const, Linas Vepstas, 2008/09/19
- [PATCH 8/12] Guile-DBD-postgres: Fix handling of float point columns, Linas Vepstas, 2008/09/19
- [PATCH 9/12] Guile-DBD-postgres: Avoid discouraged functions, Linas Vepstas, 2008/09/19
- [PATCH 10/12] Guile-DBD-postgres: Fix off-by-one when fetching rows, Linas Vepstas, 2008/09/19
- [PATCH 11/12] Guile-DBD-postgres: Avoid deprecated functions, Linas Vepstas, 2008/09/19
- [PATCH 12/12] Guile-DBD-postgres: Crash in GC, Linas Vepstas, 2008/09/19
- Re: PATCH [0/12]: Guile-DBI and Guile-DBD-Postgres, Neil Jerram, 2008/09/19