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 : "",