]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktreemodel.c
Fixes #426246.
[~andy/gtk] / gtk / gtktreemodel.c
index a34e2af2ff868253ee479b5bf4f63c7706ac4b72..2f8294b62111b87a411bdf19f3698da276253b77 100644 (file)
@@ -494,22 +494,24 @@ gtk_tree_path_new_from_indices (gint first_index,
 gchar *
 gtk_tree_path_to_string (GtkTreePath *path)
 {
-  gchar *retval, *ptr;
-  gint i;
+  gchar *retval, *ptr, *end;
+  gint i, n;
 
   g_return_val_if_fail (path != NULL, NULL);
 
   if (path->depth == 0)
     return NULL;
 
-  ptr = retval = g_new0 (gchar, path->depth*8);
-  g_sprintf (retval, "%d", path->indices[0]);
-  while (*ptr != '\000')
+  n = path->depth * 12;
+  ptr = retval = g_new0 (gchar, n);
+  end = ptr + n;
+  g_snprintf (retval, end - ptr, "%d", path->indices[0]);
+  while (*ptr != '\000') 
     ptr++;
 
   for (i = 1; i < path->depth; i++)
     {
-      g_sprintf (ptr, ":%d", path->indices[i]);
+      g_snprintf (ptr, end - ptr, ":%d", path->indices[i]);
       while (*ptr != '\000')
        ptr++;
     }
@@ -862,7 +864,7 @@ gtk_tree_iter_copy (GtkTreeIter *iter)
 
   g_return_val_if_fail (iter != NULL, NULL);
 
-  retval = g_new (GtkTreeIter, 1);
+  retval = g_slice_new (GtkTreeIter);
   *retval = *iter;
 
   return retval;
@@ -880,7 +882,7 @@ gtk_tree_iter_free (GtkTreeIter *iter)
 {
   g_return_if_fail (iter != NULL);
 
-  g_free (iter);
+  g_slice_free (GtkTreeIter, iter);
 }
 
 GType