From: Matthias Clasen Date: Thu, 12 Jan 2023 03:02:20 +0000 (-0500) Subject: css: Avoid some allocations X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~8^2~71^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6fb6f47fc8018aa6f525b2dfc117ab10be94363c;p=gtk4.git css: Avoid some allocations Reuse the name_buffer for reading strings. --- diff --git a/gtk/css/gtkcsstokenizer.c b/gtk/css/gtkcsstokenizer.c index 262f52a3cd..2652b0e994 100644 --- a/gtk/css/gtkcsstokenizer.c +++ b/gtk/css/gtkcsstokenizer.c @@ -1196,7 +1196,8 @@ gtk_css_tokenizer_read_string (GtkCssTokenizer *tokenizer, GtkCssToken *token, GError **error) { - GString *string = g_string_new (NULL); + g_string_set_size (tokenizer->name_buffer, 0); + char end = *tokenizer->data; gtk_css_tokenizer_consume_ascii (tokenizer); @@ -1222,23 +1223,22 @@ gtk_css_tokenizer_read_string (GtkCssTokenizer *tokenizer, } else { - g_string_append_unichar (string, gtk_css_tokenizer_read_escape (tokenizer)); + g_string_append_unichar (tokenizer->name_buffer, gtk_css_tokenizer_read_escape (tokenizer)); } } else if (is_newline (*tokenizer->data)) { - g_string_free (string, TRUE); gtk_css_token_init (token, GTK_CSS_TOKEN_BAD_STRING); gtk_css_tokenizer_parse_error (error, "Newlines inside strings must be escaped"); return FALSE; } else { - gtk_css_tokenizer_consume_char (tokenizer, string); + gtk_css_tokenizer_consume_char (tokenizer, tokenizer->name_buffer); } } - gtk_css_token_init_string (token, GTK_CSS_TOKEN_STRING, g_string_free (string, FALSE)); + gtk_css_token_init_string (token, GTK_CSS_TOKEN_STRING, g_strdup (tokenizer->name_buffer->str)); return TRUE; }