From 93c5892bc3a8138ba44a626d0172563a714e5b64 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Thu, 3 Sep 2009 21:30:36 +0300 Subject: [PATCH] load: Factor out an unneeded strdup By "stealing" the string parsed out in lexer, one strdup can be saved. --- src/load.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/load.c b/src/load.c index 25df182..1e2ad2a 100644 --- a/src/load.c +++ b/src/load.c @@ -544,6 +544,17 @@ out: return lex->token; } +static char *lex_steal_string(lex_t *lex) +{ + char *result = NULL; + if(lex->token == TOKEN_STRING) + { + result = lex->value.string; + lex->value.string = NULL; + } + return result; +} + static int lex_init(lex_t *lex, get_func get, eof_func eof, void *data) { stream_init(&lex->stream, get, eof, data); @@ -587,7 +598,7 @@ static json_t *parse_object(lex_t *lex, json_error_t *error) goto error; } - key = strdup(lex->value.string); + key = lex_steal_string(lex); if(!key) return NULL;