Mercurial > pidgin
comparison libpurple/protocols/jabber/xdata.c @ 23259:9c79e86e6f2b
Fix a memleak when handling jabber xforms. xmlnode_get_data() returns
a string that needs to be freed. In most places we called
value = xmlnode_get_data() a second time, so the first call wasn't
used or needed.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 01 Jun 2008 20:05:06 +0000 |
parents | eee94c5446a9 |
children | 9cb1e75854f1 |
comparison
equal
deleted
inserted
replaced
23258:babaa9794e1b | 23259:9c79e86e6f2b |
---|---|
230 if(!var && strcmp(type, "fixed")) | 230 if(!var && strcmp(type, "fixed")) |
231 continue; | 231 continue; |
232 if(!label) | 232 if(!label) |
233 label = var; | 233 label = var; |
234 | 234 |
235 if((valuenode = xmlnode_get_child(fn, "value"))) | |
236 value = xmlnode_get_data(valuenode); | |
237 | |
238 | |
239 if(!strcmp(type, "text-private")) { | 235 if(!strcmp(type, "text-private")) { |
240 if((valuenode = xmlnode_get_child(fn, "value"))) | 236 if((valuenode = xmlnode_get_child(fn, "value"))) |
241 value = xmlnode_get_data(valuenode); | 237 value = xmlnode_get_data(valuenode); |
242 | 238 |
243 field = purple_request_field_string_new(var, label, | 239 field = purple_request_field_string_new(var, label, |
331 purple_request_field_group_add_field(group, field); | 327 purple_request_field_group_add_field(group, field); |
332 | 328 |
333 g_hash_table_replace(data->fields, g_strdup(var), GINT_TO_POINTER(JABBER_X_DATA_BOOLEAN)); | 329 g_hash_table_replace(data->fields, g_strdup(var), GINT_TO_POINTER(JABBER_X_DATA_BOOLEAN)); |
334 | 330 |
335 g_free(value); | 331 g_free(value); |
336 } else if(!strcmp(type, "fixed") && value) { | 332 } else if(!strcmp(type, "fixed")) { |
337 if((valuenode = xmlnode_get_child(fn, "value"))) | 333 if((valuenode = xmlnode_get_child(fn, "value"))) |
338 value = xmlnode_get_data(valuenode); | 334 value = xmlnode_get_data(valuenode); |
339 | 335 |
340 field = purple_request_field_label_new("", value); | 336 if(value != NULL) { |
341 purple_request_field_group_add_field(group, field); | 337 field = purple_request_field_label_new("", value); |
342 | 338 purple_request_field_group_add_field(group, field); |
343 g_free(value); | 339 |
340 g_free(value); | |
341 } | |
344 } else if(!strcmp(type, "hidden")) { | 342 } else if(!strcmp(type, "hidden")) { |
345 if((valuenode = xmlnode_get_child(fn, "value"))) | 343 if((valuenode = xmlnode_get_child(fn, "value"))) |
346 value = xmlnode_get_data(valuenode); | 344 value = xmlnode_get_data(valuenode); |
347 | 345 |
348 field = purple_request_field_string_new(var, "", value ? value : "", | 346 field = purple_request_field_string_new(var, "", value ? value : "", |