From 6fb6f47fc8018aa6f525b2dfc117ab10be94363c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 11 Jan 2023 22:02:20 -0500 Subject: [PATCH] css: Avoid some allocations Reuse the name_buffer for reading strings. --- gtk/css/gtkcsstokenizer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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; } -- 2.30.2