diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2007-12-25 21:41:44 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2007-12-25 21:41:44 +0000 |
commit | e172e9ccec88999e7d8433df08d8d92568537cf7 (patch) | |
tree | 1111ef64a1028d744131e0c6fe3cd6179d309a57 /json-glib/json-parser.c | |
parent | 61a6a144a2182946be4fb975d05e1c26d814c323 (diff) | |
download | json-glib-e172e9ccec88999e7d8433df08d8d92568537cf7.tar.gz |
Kill off a few indirections
Use an intermediary pointer to avoid a lot of pointer dereferences
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r-- | json-glib/json-parser.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index 82c4a4f..d129774 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -964,6 +964,7 @@ json_parser_load_from_data (JsonParser *parser, gssize length, GError **error) { + JsonParserPrivate *priv; GScanner *scanner; gboolean done; gboolean retval = TRUE; @@ -972,12 +973,14 @@ json_parser_load_from_data (JsonParser *parser, g_return_val_if_fail (JSON_IS_PARSER (parser), FALSE); g_return_val_if_fail (data != NULL, FALSE); - g_free (parser->priv->variable_name); + priv = parser->priv; + + g_free (priv->variable_name); - if (parser->priv->root) + if (priv->root) { - json_node_free (parser->priv->root); - parser->priv->root = NULL; + json_node_free (priv->root); + priv->root = NULL; } if (length < 0) @@ -1050,10 +1053,10 @@ json_parser_load_from_data (JsonParser *parser, /* and this will propagate the error we create in the * same message handler */ - if (parser->priv->last_error) + if (priv->last_error) { - g_propagate_error (error, parser->priv->last_error); - parser->priv->last_error = NULL; + g_propagate_error (error, priv->last_error); + priv->last_error = NULL; } retval = FALSE; @@ -1064,12 +1067,12 @@ json_parser_load_from_data (JsonParser *parser, } } - g_scanner_destroy (scanner); - parser->priv->scanner = NULL; - parser->priv->current_node = NULL; - g_signal_emit (parser, parser_signals[PARSE_END], 0); + g_scanner_destroy (scanner); + priv->scanner = NULL; + priv->current_node = NULL; + return retval; } |