diff options
author | Jonathan Kang <jonathan121537@gmail.com> | 2015-09-21 16:05:50 +0800 |
---|---|---|
committer | David King <davidk@gnome.org> | 2015-09-22 11:42:33 +0100 |
commit | 5e18cf0c9ca2c3146e7a58bd0ccc42386e1c4290 (patch) | |
tree | 9ddc7169fcf8a48cf4d3b22467b69f3ddaf54ffd | |
parent | 34296141775ae8dee35261962b884eb6b7c9c8ec (diff) | |
download | gnome-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.c | 31 |
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); |