commit fdcb9e92d64ce004cec8851438c1cdbef0c25064
parent a4a9d1759fadfc58c9583905310a71f419714e3c
Author: Chris Allegretta <chrisa@asty.org>
Date: Wed, 12 Feb 2003 02:52:04 +0000
- Memory leak fixes for files.c:do_insertfile(),do_browser(), nano.c:do_spell(), and search.c:do_replace() (David Benbennick)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1449 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -11,6 +11,8 @@ CVS code
(David Benbennick).
- Change ngettext macro to P_(), to avoid a clash with the reserved C
__ identifier (Jordi).
+ - Memory leak fixes for files.c:do_insertfile(),do_browser(),
+ nano.c:do_spell(), and search.c:do_replace() (David Benbennick).
- files.c:
cwd_tab_completion()
- Memory leak fix (David Benbennick).
diff --git a/files.c b/files.c
@@ -503,9 +503,10 @@ int do_insertfile(int loading_file)
if (i == NANO_TOFILES_KEY) {
char *tmp = do_browse_from(answer);
- if (tmp != NULL)
+ if (tmp != NULL) {
+ free(answer);
answer = tmp;
- else
+ } else
goto start_again;
}
#endif
@@ -2718,6 +2719,8 @@ char *do_browser(const char *inpath)
}
/* Start over again with the new path value */
+ free_charptrarray(filelist, numents);
+ free(foo);
free(path);
path = new_path;
return do_browser(path);
diff --git a/nano.c b/nano.c
@@ -1976,7 +1976,7 @@ int do_spell(void)
nano_disabled_msg();
return TRUE;
#else
- char *temp, *spell_msg = _("Generic error");
+ char *temp, *spell_msg;
if ((temp = safe_tempnam(0, "nano.")) == NULL) {
statusbar(_("Could not create a temporary filename: %s"),
@@ -2001,17 +2001,15 @@ int do_spell(void)
else
spell_msg = do_int_speller(temp);
remove(temp);
+ free(temp);
- if (spell_msg == NULL) {
- statusbar(_("Finished checking spelling"));
- return 1;
- } else {
+ if (spell_msg != NULL) {
statusbar(_("Spell checking failed: %s"), spell_msg);
return 0;
}
- free(temp);
-
+ statusbar(_("Finished checking spelling"));
+ return 1;
#endif
}
diff --git a/search.c b/search.c
@@ -763,6 +763,7 @@ int do_replace(void)
else
not_found_msg(prevanswer);
+ free(prevanswer);
replace_abort();
return 1;
}