From e9f1fe16bc625a7ff2ef615a9ac3e2aabc7290b0 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 3 Jan 2007 21:23:42 +0000 Subject: Fix memory leaks svn path=/trunk/; revision=17039 --- ChangeLog | 5 +++++ gtk/gtkprinteroptionwidget.c | 26 +++++++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0188d047bc..84de41642d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-01-03 Matthias Clasen + + * gtk/gtkprinteroptionwidget.c (filesave_changed_cb): + Fix memory leaks. + 2007-01-03 Matthias Clasen * gtk/gtkassistant.c (remove_page): If the current page diff --git a/gtk/gtkprinteroptionwidget.c b/gtk/gtkprinteroptionwidget.c index 7b1ed3fdd5..e639abf952 100644 --- a/gtk/gtkprinteroptionwidget.c +++ b/gtk/gtkprinteroptionwidget.c @@ -453,11 +453,9 @@ filesave_changed_cb (GtkWidget *button, GtkPrinterOptionWidget *widget) { GtkPrinterOptionWidgetPrivate *priv = widget->priv; - gchar *uri, *directory, *path; - const gchar *file; + gchar *uri, *file; /* TODO: how do we support nonlocal file systems? */ - directory = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (priv->combo)); file = g_filename_from_utf8 (gtk_entry_get_text (GTK_ENTRY (priv->entry)), -1, NULL, NULL, NULL); if (file == NULL) @@ -470,24 +468,34 @@ filesave_changed_cb (GtkWidget *button, uri = g_filename_to_uri (file, NULL, NULL); else { + gchar *path; + #ifdef G_OS_UNIX if (file[0] == '~' && file[1] == '/') { - directory = g_strdup (g_get_home_dir ()); - file += 2; + path = g_build_filename (g_get_home_dir (), file + 2, NULL); } + else #endif - - path = g_build_filename (directory, file, NULL); + { + gchar *directory; + + directory = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (priv->combo)); + path = g_build_filename (directory, file, NULL); + + g_free (directory); + } + uri = g_filename_to_uri (path, NULL, NULL); + g_free (path); } if (uri) gtk_printer_option_set (priv->source, uri); - g_free (directory); g_free (uri); + g_free (file); g_signal_handler_unblock (priv->source, priv->source_changed_handler); emit_changed (widget); @@ -508,7 +516,7 @@ filter_numeric (const gchar *val, for (i = 0, j = 0; i < len; i++) { - if (isdigit(val[i])) + if (isdigit (val[i])) { filtered_val[j] = val[i]; j++; -- cgit v1.2.1