From 3203ee24512edad1003ea0fb4ddb34134af2429e Mon Sep 17 00:00:00 2001 From: dequis Date: Sun, 22 Jan 2017 22:09:51 -0300 Subject: Fix infinite loop in previous commit when being added by a non-friend Because apparently that's a thing that happens (incoming delta with added item saying "friendship_status": "CAN_REQUEST" instead of "ARE_FRIENDS") --- facebook/facebook-api.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c index 1237861..d0e91b2 100644 --- a/facebook/facebook-api.c +++ b/facebook/facebook-api.c @@ -2034,6 +2034,7 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users) FbApiUser *user; FbId uid; FbJsonValues *values; + gboolean is_array; GError *err = NULL; values = fb_json_values_new(root); @@ -2046,7 +2047,9 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users) fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.hugePictureUrl.uri"); - if (JSON_NODE_TYPE(root) == JSON_NODE_ARRAY) { + is_array = (JSON_NODE_TYPE(root) == JSON_NODE_ARRAY); + + if (is_array) { fb_json_values_set_array(values, FALSE, "$"); } @@ -2058,6 +2061,9 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users) if (((g_strcmp0(str, "ARE_FRIENDS") != 0) && (uid != priv->uid)) || (uid == 0)) { + if (!is_array) { + break; + } continue; } @@ -2070,7 +2076,7 @@ fb_api_cb_contacts_nodes(FbApi *api, JsonNode *root, GSList *users) users = g_slist_prepend(users, user); - if (JSON_NODE_TYPE(root) != JSON_NODE_ARRAY) { + if (!is_array) { break; } } -- cgit v1.2.3