summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Kang <jonathan121537@gmail.com>2015-09-21 16:05:50 +0800
committerDavid King <davidk@gnome.org>2015-09-22 11:42:33 +0100
commit5e18cf0c9ca2c3146e7a58bd0ccc42386e1c4290 (patch)
tree9ddc7169fcf8a48cf4d3b22467b69f3ddaf54ffd
parent34296141775ae8dee35261962b884eb6b7c9c8ec (diff)
downloadgnome-logs-5e18cf0c9ca2c3146e7a58bd0ccc42386e1c4290.tar.gz
Fix crash when tokenizing search string
https://bugzilla.gnome.org/show_bug.cgi?id=755327
-rw-r--r--src/gl-eventviewlist.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/gl-eventviewlist.c b/src/gl-eventviewlist.c
index 614d0e8..46f55e8 100644
--- a/src/gl-eventviewlist.c
+++ b/src/gl-eventviewlist.c
@@ -127,8 +127,7 @@ tokenize_search_string (gchar *search_text)
{
break;
}
-
- if (scanner->token == '+')
+ else if (scanner->token == '+')
{
g_ptr_array_add (token_array, g_strdup ("+"));
@@ -143,7 +142,17 @@ tokenize_search_string (gchar *search_text)
field_name = NULL;
}
}
- else
+ else if (scanner->token == G_TOKEN_INT)
+ {
+ field_name = g_strdup_printf ("%lu", scanner->value.v_int);
+ g_ptr_array_add (token_array, field_name);
+ }
+ else if (scanner->token == G_TOKEN_FLOAT)
+ {
+ field_name = g_strdup_printf ("%g", scanner->value.v_float);
+ g_ptr_array_add (token_array, field_name);
+ }
+ else if (scanner->token == G_TOKEN_IDENTIFIER)
{
if (token_array->len != 0)
{
@@ -153,9 +162,23 @@ tokenize_search_string (gchar *search_text)
field_name = g_strdup (scanner->value.v_identifier);
g_ptr_array_add (token_array, field_name);
}
+ else
+ {
+ field_name = NULL;
+ }
g_scanner_get_next_token (scanner);
- if (scanner->value.v_identifier != NULL)
+ if (scanner->token == G_TOKEN_INT)
+ {
+ field_value = g_strdup_printf ("%lu", scanner->value.v_int);
+ g_ptr_array_add (token_array, field_value);
+ }
+ else if (scanner->token == G_TOKEN_FLOAT)
+ {
+ field_value = g_strdup_printf ("%g", scanner->value.v_float);
+ g_ptr_array_add (token_array, field_value);
+ }
+ else if (scanner->token == G_TOKEN_IDENTIFIER)
{
field_value = g_strdup (scanner->value.v_identifier);
g_ptr_array_add (token_array, field_value);