From 795d915c9b6efeea3d6d5574cecbaec3e16c763b Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 30 May 2013 17:33:41 +0000 Subject: fix source.c find_and_open_source can leak a cleanup. * source.c (find_and_open_source): Call do_cleanups. --- gdb/source.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gdb/source.c') diff --git a/gdb/source.c b/gdb/source.c index 161a6c4..71b6d53 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -985,6 +985,7 @@ find_and_open_source (const char *filename, char *path = source_path; const char *p; int result; + struct cleanup *cleanup; /* Quick way out if we already know its full name. */ @@ -1016,6 +1017,8 @@ find_and_open_source (const char *filename, *fullname = NULL; } + cleanup = make_cleanup (null_cleanup, NULL); + if (dirname != NULL) { /* If necessary, rewrite the compilation directory name according @@ -1072,6 +1075,7 @@ find_and_open_source (const char *filename, result = openp (path, OPF_SEARCH_IN_PATH, p, OPEN_MODE, fullname); } + do_cleanups (cleanup); return result; } -- cgit v1.1