Avoid an infinite loop on broken utf16.
[mono.git] / eglib / src / garray.c
index e9605d0f7862dba4bde3aa0a3e7d56dc7d2a7ef1..99ebf6e278e30942d887b69d7105635d983ed637 100644 (file)
@@ -37,7 +37,7 @@
 typedef struct {
        GArray array;
        gboolean clear_;
-       gboolean element_size;
+       guint element_size;
        gboolean zero_terminated;
        gint capacity;
 } GArrayPriv;
@@ -181,3 +181,26 @@ g_array_remove_index (GArray *array,
        return array;
 }
 
+GArray*
+g_array_remove_index_fast (GArray *array,
+                     guint index_)
+{
+       GArrayPriv *priv = (GArrayPriv*)array;
+
+       g_return_val_if_fail (array != NULL, NULL);
+
+       memmove (element_offset (priv, index_),
+                element_offset (priv, array->len - 1),
+                element_length (priv, 1));
+
+       array->len --;
+
+       if (priv->zero_terminated) {
+               memset (element_offset (priv, priv->array.len),
+                       0,
+                       priv->element_size);
+       }
+
+       return array;
+}
+