gtk+ r21352 - in branches/gtk-2-12: . gtk



Author: matthiasc
Date: Fri Sep 12 02:56:03 2008
New Revision: 21352
URL: http://svn.gnome.org/viewvc/gtk+?rev=21352&view=rev

Log:
        Bug 541645 â gtkfilechooserdefault segfaults when bookmark does not
        contain ://

        * gtk/gtkfilechooserdefault.c (_gtk_file_chooser_label_for_file):
        Be more robust. Reported by  Jelte van der Hoek



Modified:
   branches/gtk-2-12/ChangeLog
   branches/gtk-2-12/gtk/gtkfilechooserdefault.c

Modified: branches/gtk-2-12/gtk/gtkfilechooserdefault.c
==============================================================================
--- branches/gtk-2-12/gtk/gtkfilechooserdefault.c	(original)
+++ branches/gtk-2-12/gtk/gtkfilechooserdefault.c	Fri Sep 12 02:56:03 2008
@@ -1691,37 +1691,43 @@
   gchar *host, *label;
   
   start = strstr (uri, "://");
-  start += 3;
-  path = strchr (start, '/');
-  
-  if (path)
-    end = path;
-  else
+  if (start)
     {
-      end = uri + strlen (uri);
-      path = "/";
-    }
+      start += 3;
+      path = strchr (start, '/');
+      if (path)
+        end = path;
+      else
+        {
+          end = uri + strlen (uri);
+          path = "/";
+        }
 
-  /* strip username */
-  p = strchr (start, '@');
-  if (p && p < end)
-    {
-      start = p + 1;
-    }
-  
-  p = strchr (start, ':');
-  if (p && p < end)
-    end = p;
+      /* strip username */
+      p = strchr (start, '@');
+      if (p && p < end)
+        {
+          start = p + 1;
+        }
   
-  host = g_strndup (start, end - start);
-
-  /* Translators: the first string is a path and the second string 
-   * is a hostname. Nautilus and the panel contain the same string 
-   * to translate. 
-   */
-  label = g_strdup_printf (_("%1$s on %2$s"), path, host);
+      p = strchr (start, ':');
+      if (p && p < end)
+        end = p;
+  
+      host = g_strndup (start, end - start);
+
+      /* Translators: the first string is a path and the second string 
+       * is a hostname. Nautilus and the panel contain the same string 
+       * to translate. 
+       */
+      label = g_strdup_printf (_("%1$s on %2$s"), path, host);
   
-  g_free (host);
+      g_free (host);
+    }
+  else
+    {
+      label = g_strdup (uri);
+    }
 
   return label;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]