From 85633f11824bc806bef3d18b8c8a0bdb96af6a16 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 31 Mar 2011 14:48:10 +0530 Subject: [PATCH] GVariant parser: parse "inf", "-inf" and "nan" --- glib/gvariant-parser.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c index b5cfe24..9550b91 100644 --- a/glib/gvariant-parser.c +++ b/glib/gvariant-parser.c @@ -1777,8 +1777,9 @@ number_get_pattern (AST *ast, Number *number = (Number *) ast; if (strchr (number->token, '.') || - (!g_str_has_prefix (number->token, "0x") && - strchr (number->token, 'e'))) + (!g_str_has_prefix (number->token, "0x") && strchr (number->token, 'e')) || + strstr (number->token, "inf") || + strstr (number->token, "nan")) return g_strdup ("Md"); return g_strdup ("MN"); @@ -2264,6 +2265,11 @@ parse (TokenStream *stream, else if (token_stream_consume (stream, "false")) result = boolean_new (FALSE); + else if (token_stream_is_numeric (stream) || + token_stream_peek_string (stream, "inf") || + token_stream_peek_string (stream, "nan")) + result = number_parse (stream, app, error); + else if (token_stream_peek (stream, 'n') || token_stream_peek (stream, 'j')) result = maybe_parse (stream, app, error); @@ -2272,9 +2278,6 @@ parse (TokenStream *stream, token_stream_is_keyword (stream)) result = typedecl_parse (stream, app, error); - else if (token_stream_is_numeric (stream)) - result = number_parse (stream, app, error); - else if (token_stream_peek (stream, '\'') || token_stream_peek (stream, '"')) result = string_parse (stream, app, error); -- 2.7.4