diff options
author | Benjamin Otte <otte@redhat.com> | 2019-03-22 17:37:04 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2019-03-22 19:55:34 +0100 |
commit | d9ef734458bf1a2a394c5962787a6351d42f57c6 (patch) | |
tree | 2363a4c60599326af9a1c572fdfa09fc9449f3f9 /gtk | |
parent | 73760e583515bbefd6b135f522b9450beeab04fb (diff) | |
download | gtk+-d9ef734458bf1a2a394c5962787a6351d42f57c6.tar.gz |
cssparser: Simplify
Remove the uint parser (and use the int parser in the one user of it).
And avoid unnecessarily going through a macro.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkcsseasevalue.c | 9 | ||||
-rw-r--r-- | gtk/gtkcssparser.c | 38 | ||||
-rw-r--r-- | gtk/gtkcssparserprivate.h | 6 |
3 files changed, 15 insertions, 38 deletions
diff --git a/gtk/gtkcsseasevalue.c b/gtk/gtkcsseasevalue.c index a9ab9dce40..ab990af38e 100644 --- a/gtk/gtkcsseasevalue.c +++ b/gtk/gtkcsseasevalue.c @@ -254,7 +254,7 @@ gtk_css_ease_value_parse_cubic_bezier (GtkCssParser *parser) static GtkCssValue * gtk_css_ease_value_parse_steps (GtkCssParser *parser) { - guint n_steps; + int n_steps; gboolean start; if (!_gtk_css_parser_try (parser, "(", TRUE)) @@ -263,11 +263,16 @@ gtk_css_ease_value_parse_steps (GtkCssParser *parser) return NULL; } - if (!_gtk_css_parser_try_uint (parser, &n_steps)) + if (!_gtk_css_parser_try_int (parser, &n_steps)) { _gtk_css_parser_error (parser, "Expected number of steps"); return NULL; } + else if (n_steps < 1) + { + _gtk_css_parser_error (parser, "Number of steps must be > 0"); + return NULL; + } if (_gtk_css_parser_try (parser, ",", TRUE)) { diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c index 6f4404db75..25b86f3cb8 100644 --- a/gtk/gtkcssparser.c +++ b/gtk/gtkcssparser.c @@ -281,14 +281,17 @@ _gtk_css_parser_skip_whitespace (GtkCssParser *parser) } gboolean -gtk_css_parser_try_len (GtkCssParser *parser, - const char *string, - gsize string_len, - gboolean skip_whitespace) +_gtk_css_parser_try (GtkCssParser *parser, + const char *string, + gboolean skip_whitespace) { + gsize string_len; + g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE); g_return_val_if_fail (string != NULL, FALSE); + string_len = strlen (string); + if (g_ascii_strncasecmp (parser->data, string, string_len) != 0) return FALSE; @@ -563,33 +566,6 @@ _gtk_css_parser_try_int (GtkCssParser *parser, } gboolean -_gtk_css_parser_try_uint (GtkCssParser *parser, - guint *value) -{ - guint64 result; - char *end; - - g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE); - g_return_val_if_fail (value != NULL, FALSE); - - errno = 0; - result = g_ascii_strtoull (parser->data, &end, 10); - if (errno) - return FALSE; - if (result > G_MAXUINT) - return FALSE; - if (parser->data == end) - return FALSE; - - parser->data = end; - *value = result; - - _gtk_css_parser_skip_whitespace (parser); - - return TRUE; -} - -gboolean _gtk_css_parser_try_double (GtkCssParser *parser, gdouble *value) { diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h index e5acde65e9..73b498a4fa 100644 --- a/gtk/gtkcssparserprivate.h +++ b/gtk/gtkcssparserprivate.h @@ -61,10 +61,8 @@ gboolean _gtk_css_parser_is_string (GtkCssParser *parser * however is fine to call if you don’t know yet if the token is a foo or a bar, * you can _try_bar() if try_foo() failed. */ -#define _gtk_css_parser_try(p, s, skip) (gtk_css_parser_try_len (p, s, strlen(s), skip)) -gboolean gtk_css_parser_try_len (GtkCssParser *parser, +gboolean _gtk_css_parser_try (GtkCssParser *parser, const char *string, - gsize string_len, gboolean skip_whitespace); char * _gtk_css_parser_try_ident (GtkCssParser *parser, gboolean skip_whitespace); @@ -72,8 +70,6 @@ char * _gtk_css_parser_try_name (GtkCssParser *parser gboolean skip_whitespace); gboolean _gtk_css_parser_try_int (GtkCssParser *parser, int *value); -gboolean _gtk_css_parser_try_uint (GtkCssParser *parser, - guint *value); gboolean _gtk_css_parser_try_double (GtkCssParser *parser, gdouble *value); gboolean _gtk_css_parser_try_hash_color (GtkCssParser *parser, |