summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2013-10-25 12:29:14 +0100
committerVincent Sanders <vince@netsurf-browser.org>2013-10-25 12:42:53 +0100
commit88bd4e2ee2ea4c3af29c67b071406c957f9ba111 (patch)
tree1b09be17be27117e3630944280518603561cda9f /gtk
parent2e4c1cf950eb8198eeaa49757bf44dc0a0817c4e (diff)
downloadnetsurf-88bd4e2ee2ea4c3af29c67b071406c957f9ba111.tar.gz
netsurf-88bd4e2ee2ea4c3af29c67b071406c957f9ba111.tar.bz2
fix resource leak coverity 1109883
Diffstat (limited to 'gtk')
-rw-r--r--gtk/dialogs/source.c26
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);