diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2013-10-25 12:29:14 +0100 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2013-10-25 12:42:53 +0100 |
commit | 88bd4e2ee2ea4c3af29c67b071406c957f9ba111 (patch) | |
tree | 1b09be17be27117e3630944280518603561cda9f | |
parent | 2e4c1cf950eb8198eeaa49757bf44dc0a0817c4e (diff) | |
download | netsurf-88bd4e2ee2ea4c3af29c67b071406c957f9ba111.tar.gz netsurf-88bd4e2ee2ea4c3af29c67b071406c957f9ba111.tar.bz2 |
fix resource leak coverity 1109883
-rw-r--r-- | gtk/dialogs/source.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/gtk/dialogs/source.c b/gtk/dialogs/source.c index ef4e36eb3..4499ccae6 100644 --- a/gtk/dialogs/source.c +++ b/gtk/dialogs/source.c @@ -254,6 +254,9 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw) } +/** + * create a new tab with page source + */ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw) { const char *source_data; @@ -261,15 +264,18 @@ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw) char *ndata = 0; nsurl *url; nserror error; + utf8_convert_ret r; + gchar *filename; + char *fileurl; + gint handle; source_data = content_get_source_data(bw->current_content, - &source_size); + &source_size); - utf8_convert_ret r = utf8_from_enc( - source_data, - html_get_encoding(bw->current_content), - source_size, - &ndata); + r = utf8_from_enc(source_data, + html_get_encoding(bw->current_content), + source_size, + &ndata); if (r == UTF8_CONVERT_NOMEM) { warn_user("NoMemory",0); return; @@ -277,20 +283,22 @@ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw) warn_user("EncNotRec",0); return; } - gchar *filename; - char *fileurl; - gint handle = g_file_open_tmp("nsgtksourceXXXXXX", &filename, NULL); + + handle = g_file_open_tmp("nsgtksourceXXXXXX", &filename, NULL); if ((handle == -1) || (filename == NULL)) { warn_user(messages_get("gtkSourceTabError"), 0); + free(ndata); return; } close (handle); /* in case it was binary mode */ + FILE *f = fopen(filename, "w"); if (f == NULL) { warn_user(messages_get("gtkSourceTabError"), 0); g_free(filename); return; } + fprintf(f, "%s", ndata); fclose(f); free(ndata); |