Remove some special-casing of empty string which led to dangling pointers.
authorMatthias Clasen <mclasen@redhat.com>
Thu, 27 Apr 2006 20:25:26 +0000 (20:25 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 27 Apr 2006 20:25:26 +0000 (20:25 +0000)
2006-04-27  Matthias Clasen  <mclasen@redhat.com>

* glib/gbookmarkfile.c (g_bookmark_file_set_description)
(g_bookmark_file_set_title, g_bookmark_file_set_icon):
Remove some special-casing of empty string which led to
dangling pointers.  (#339337, Morten Welinder)
(expand_exec_line): Don't use printf() needlessly, handle
trailing '%' gracefully.  (#339338, Morten Welinder)
(is_element_full): Silence the compiler.

ChangeLog
ChangeLog.pre-2-12
glib/gbookmarkfile.c

index 34868e3046d9b6cf0aa3b0277345a93cb16e99f4..c10bbc78278373ffc3d639494ab2e8ddc838278a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,9 @@
        (g_bookmark_file_set_title, g_bookmark_file_set_icon): 
        Remove some special-casing of empty string which led to 
        dangling pointers.  (#339337, Morten Welinder)
+       (expand_exec_line): Don't use printf() needlessly, handle
+       trailing '%' gracefully.  (#339338, Morten Welinder)
+       (is_element_full): Silence the compiler.
 
 2006-04-27  Behdad Esfahbod  <behdad@gnome.org>
 
index 34868e3046d9b6cf0aa3b0277345a93cb16e99f4..c10bbc78278373ffc3d639494ab2e8ddc838278a 100644 (file)
@@ -4,6 +4,9 @@
        (g_bookmark_file_set_title, g_bookmark_file_set_icon): 
        Remove some special-casing of empty string which led to 
        dangling pointers.  (#339337, Morten Welinder)
+       (expand_exec_line): Don't use printf() needlessly, handle
+       trailing '%' gracefully.  (#339338, Morten Welinder)
+       (is_element_full): Silence the compiler.
 
 2006-04-27  Behdad Esfahbod  <behdad@gnome.org>
 
index d2cc5201f933737764b816d406074e0efc5c3b96..0fb4256374f8e26a42df9e883313914a7ec90733 100644 (file)
@@ -1000,9 +1000,8 @@ is_element_full (ParseData   *parse_data,
                  const gchar *element,
                  const gchar  sep)
 {
-  gchar *ns_uri, *ns_name;
-  gchar *element_name, *resolved;
-  gchar *p, *s;
+  gchar *ns_uri, *ns_name, *s, *resolved;
+  const gchar *p, *element_name;
   gboolean retval;
  
   g_assert (parse_data != NULL);
@@ -3282,14 +3281,16 @@ expand_exec_line (const gchar *exec_fmt,
      ch = *exec_fmt++;
      switch (ch)
        {
+       case '\0':
+        goto out;
        case 'u':
-         g_string_append_printf (exec, "%s", uri);
+         g_string_append (exec, uri);
          break;
        case 'f':
          {
-         gchar *file = g_filename_from_uri (uri, NULL, NULL);
-         g_string_append_printf (exec, "%s", file);
-         g_free (file);
+          gchar *file = g_filename_from_uri (uri, NULL, NULL);
+          g_string_append (exec, file);
+          g_free (file);
          }
          break;
        case '%':
@@ -3299,6 +3300,7 @@ expand_exec_line (const gchar *exec_fmt,
        }
    }
    
+ out:
   return g_string_free (exec, FALSE);
 }