diff options
author | Matthias Clasen <mclasen@redhat.com> | 2014-08-21 14:20:28 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-08-21 14:22:13 -0400 |
commit | 23fcc5e373e87008aaf67cdf062fb4669193c1ba (patch) | |
tree | 4276c376b6cf3bd13d6402ddcf991b3e0ab57267 /gtk/gtkbuilder.c | |
parent | beae42c49b7316edb2456a128a405bce3c01302e (diff) | |
download | gtk+-23fcc5e373e87008aaf67cdf062fb4669193c1ba.tar.gz |
GtkBuilder: Support parsing int64/uin64 values
This was missing; the code to parse these numbers was there,
but the switch didn't have cases for these types.
https://bugzilla.gnome.org/show_bug.cgi?id=602443
Diffstat (limited to 'gtk/gtkbuilder.c')
-rw-r--r-- | gtk/gtkbuilder.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 1be1589af5..c6f5795dc5 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -1869,9 +1869,11 @@ gtk_builder_value_from_string_type (GtkBuilder *builder, } case G_TYPE_INT: case G_TYPE_LONG: + case G_TYPE_INT64: { - long l; + gint64 l; gchar *endptr = NULL; + errno = 0; l = g_ascii_strtoll (string, &endptr, 0); if (errno || endptr == string) @@ -1886,14 +1888,17 @@ gtk_builder_value_from_string_type (GtkBuilder *builder, } if (G_VALUE_HOLDS_INT (value)) g_value_set_int (value, l); - else + else if (G_VALUE_HOLDS_LONG (value)) g_value_set_long (value, l); + else + g_value_set_int64 (value, l); break; } case G_TYPE_UINT: case G_TYPE_ULONG: + case G_TYPE_UINT64: { - gulong ul; + guint64 ul; gchar *endptr = NULL; errno = 0; ul = g_ascii_strtoull (string, &endptr, 0); @@ -1909,8 +1914,10 @@ gtk_builder_value_from_string_type (GtkBuilder *builder, } if (G_VALUE_HOLDS_UINT (value)) g_value_set_uint (value, ul); - else + else if (G_VALUE_HOLDS_ULONG (value)) g_value_set_ulong (value, ul); + else + g_value_set_uint64 (value, ul); break; } case G_TYPE_ENUM: |