load: Factor out an unneeded strdup
By "stealing" the string parsed out in lexer, one strdup can be saved.
This commit is contained in:
parent
1095ca956b
commit
93c5892bc3
13
src/load.c
13
src/load.c
@ -544,6 +544,17 @@ out:
|
|||||||
return lex->token;
|
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)
|
static int lex_init(lex_t *lex, get_func get, eof_func eof, void *data)
|
||||||
{
|
{
|
||||||
stream_init(&lex->stream, get, eof, 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;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
key = strdup(lex->value.string);
|
key = lex_steal_string(lex);
|
||||||
if(!key)
|
if(!key)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user