array: return_if_fail() if element size is 0
authorBenjamin Otte <otte@redhat.com>
Sat, 14 Jan 2012 00:13:42 +0000 (01:13 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 14 Jan 2012 00:15:16 +0000 (01:15 +0100)
This is particular useful for:
  g_array_new (sizeof (MyStruct), FALSE, FALSE);
because the correct incantation is
  g_array_new (FALSE, FALSE, sizeof (MyStruct));
and these warnings will trigger in the first situation.

glib/garray.c

index 14aef84..5a5f9fa 100644 (file)
@@ -162,7 +162,9 @@ g_array_new (gboolean zero_terminated,
             gboolean clear,
             guint    elt_size)
 {
-  return (GArray*) g_array_sized_new (zero_terminated, clear, elt_size, 0);
+  g_return_val_if_fail (elt_size > 0, NULL);
+
+  return g_array_sized_new (zero_terminated, clear, elt_size, 0);
 }
 
 /**
@@ -185,7 +187,11 @@ GArray* g_array_sized_new (gboolean zero_terminated,
                           guint    elt_size,
                           guint    reserved_size)
 {
-  GRealArray *array = g_slice_new (GRealArray);
+  GRealArray *array;
+  
+  g_return_val_if_fail (elt_size > 0, NULL);
+
+  array = g_slice_new (GRealArray);
 
   array->data            = NULL;
   array->len             = 0;