| 236 str = g_string_new(""); |
235 str = g_string_new(""); |
| 237 str = g_string_append_len(str, c->data, c->data_sz); |
236 str = g_string_append_len(str, c->data, c->data_sz); |
| 238 } |
237 } |
| 239 } |
238 } |
| 240 |
239 |
| 241 if(str) { |
240 if (str == NULL) |
| 242 ret = str->str; |
241 return NULL; |
| 243 g_string_free(str, FALSE); |
242 |
| 244 } |
243 return g_string_free(str, FALSE); |
| 245 |
|
| 246 return ret; |
|
| 247 } |
244 } |
| 248 |
245 |
| 249 static char *xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) |
246 static char *xmlnode_to_str_helper(xmlnode *node, int *len, gboolean formatting, int depth) |
| 250 { |
247 { |
| 251 char *ret; |
|
| 252 GString *text = g_string_new(""); |
248 GString *text = g_string_new(""); |
| 253 xmlnode *c; |
249 xmlnode *c; |
| 254 char *node_name, *esc, *esc2, *tab = NULL; |
250 char *node_name, *esc, *esc2, *tab = NULL; |
| 255 gboolean need_end = FALSE, pretty = formatting; |
251 gboolean need_end = FALSE, pretty = formatting; |
| 256 #ifdef _WIN32 |
252 #ifdef _WIN32 |
| 309 g_free(node_name); |
305 g_free(node_name); |
| 310 |
306 |
| 311 if(tab) |
307 if(tab) |
| 312 g_free(tab); |
308 g_free(tab); |
| 313 |
309 |
| 314 ret = text->str; |
|
| 315 if(len) |
310 if(len) |
| 316 *len = text->len; |
311 *len = text->len; |
| 317 g_string_free(text, FALSE); |
312 |
| 318 return ret; |
313 return g_string_free(text, FALSE); |
| 319 } |
314 } |
| 320 |
315 |
| 321 char *xmlnode_to_str(xmlnode *node, int *len) { |
316 char *xmlnode_to_str(xmlnode *node, int *len) { |
| 322 return xmlnode_to_str_helper(node, len, FALSE, 0); |
317 return xmlnode_to_str_helper(node, len, FALSE, 0); |
| 323 } |
318 } |