summaryrefslogtreecommitdiff
path: root/gi/pygi-argument.c
diff options
context:
space:
mode:
Diffstat (limited to 'gi/pygi-argument.c')
-rw-r--r--gi/pygi-argument.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index 9b98d9c2..5f1726cb 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -269,7 +269,16 @@ _pygi_argument_to_array (GIArgument *arg,
g_base_info_unref ( (GIBaseInfo *) item_type_info);
if (is_zero_terminated) {
- length = g_strv_length (arg->v_pointer);
+ if (item_size == sizeof(gpointer))
+ length = g_strv_length ((gchar **)arg->v_pointer);
+ else if (item_size == 1)
+ length = strlen ((gchar*)arg->v_pointer);
+ else if (item_size == sizeof(int))
+ for (length = 0; *(((int*)arg->v_pointer) + length); length++);
+ else if (item_size == sizeof(short))
+ for (length = 0; *(((short*)arg->v_pointer) + length); length++);
+ else
+ g_assert_not_reached ();
} else {
length = g_type_info_get_array_fixed_size (type_info);
if (length < 0) {