summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>2022-06-26 00:36:29 +0200
committerMaciej S. Szmigiero <mail@maciej.szmigiero.name>2022-06-26 01:22:18 +0200
commitedfb6cdc7a69371de609b11b0b90037de12d8c63 (patch)
tree0b1557b7e29fda288cf956da04dc7721f0fccd01
parent984df9a0e278c279f0663c2a5bd05e15fe56ca99 (diff)
mozilla: Fix small bugs in gclue_mozilla_parse_response()
- Make sure to not leak a JsonParser when this function returns early, - Check "message" JSON member for existence before fetching it (it's an error to try fetching a non-existing member), - Don't use MLS return error codes as GIO error codes - they don't match.
-rw-r--r--src/gclue-mozilla.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/gclue-mozilla.c b/src/gclue-mozilla.c
index 8e602c1..b0e5b29 100644
--- a/src/gclue-mozilla.c
+++ b/src/gclue-mozilla.c
@@ -252,17 +252,19 @@ static gboolean
parse_server_error (JsonObject *object, GError **error)
{
JsonObject *error_obj;
- int code;
const char *message;
if (!json_object_has_member (object, "error"))
return FALSE;
error_obj = json_object_get_object_member (object, "error");
- code = json_object_get_int_member (error_obj, "code");
- message = json_object_get_string_member (error_obj, "message");
+ if (json_object_has_member (error_obj, "message")) {
+ message = json_object_get_string_member (error_obj, "message");
+ } else {
+ message = "Unknown error";
+ }
- g_set_error_literal (error, G_IO_ERROR, code, message);
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, message);
return TRUE;
}
@@ -271,7 +273,7 @@ GClueLocation *
gclue_mozilla_parse_response (const char *json,
GError **error)
{
- JsonParser *parser;
+ g_autoptr(JsonParser) parser = NULL;
JsonNode *node;
JsonObject *object, *loc_object;
GClueLocation *location;
@@ -296,8 +298,6 @@ gclue_mozilla_parse_response (const char *json,
location = gclue_location_new (latitude, longitude, accuracy);
- g_object_unref (parser);
-
return location;
}