diff options
author | Eion Robb <eion@robbmob.com> | 2017-03-25 10:04:34 +0300 |
---|---|---|
committer | Eion Robb <eion@robbmob.com> | 2017-03-25 10:04:34 +0300 |
commit | e54231fa83048d81af3a7c92de73ac8637bc0f01 (patch) | |
tree | 2f178fdd6121705b6d85e0cb99e4922493c23eab /skypeweb/skypeweb_contacts.c | |
parent | eaec528710db44983c09a195269d9782707d3100 (diff) |
Fix for crash when using 'Get Info' and server sends a numeric 'gender'
Diffstat (limited to 'skypeweb/skypeweb_contacts.c')
-rw-r--r-- | skypeweb/skypeweb_contacts.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c index 2f2ff69..688e31c 100644 --- a/skypeweb/skypeweb_contacts.c +++ b/skypeweb/skypeweb_contacts.c @@ -1156,15 +1156,25 @@ skypeweb_got_info(SkypeWebAccount *sa, JsonNode *node, gpointer user_data) _SKYPE_USER_INFO("birthday", "Birthday");
//_SKYPE_USER_INFO("gender", "Gender");
if (json_object_has_member(userobj, "gender") && !json_object_get_null_member(userobj, "gender")) {
- const gchar *gender = json_object_get_string_member(userobj, "gender");
- const gchar *gender_output;
- if (*gender == '1') {
- gender_output = _("Male");
- } else if (*gender == '2') {
- gender_output = _("Female");
+ const gchar *gender_output = _("Unknown");
+
+ // Can be presented as either a string of a number or as a number argh
+ if (json_node_get_value_type(json_object_get_member(userobj, "gender")) == G_TYPE_STRING) {
+ const gchar *gender = json_object_get_string_member(userobj, "gender");
+ if (*gender == '1') {
+ gender_output = _("Male");
+ } else if (*gender == '2') {
+ gender_output = _("Female");
+ }
} else {
- gender_output = _("Unknown");
+ gint64 gender = json_object_get_int_member(userobj, "gender");
+ if (gender == 1) {
+ gender_output = _("Male");
+ } else if (gender == 2) {
+ gender_output = _("Female");
+ }
}
+
purple_notify_user_info_add_pair_html(user_info, _("Gender"), gender_output);
}
_SKYPE_USER_INFO("language", "Language");
|