diff src/xmlnode.c @ 7642:9008b5be4275

[gaim-migrate @ 8285] let the xmlnode stuff handle embedded NULLs (i'll need this later) committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Wed, 26 Nov 2003 17:28:13 +0000
parents af889fd531d0
children fa6395637e2c
line wrap: on
line diff
--- a/src/xmlnode.c	Wed Nov 26 16:33:40 2003 +0000
+++ b/src/xmlnode.c	Wed Nov 26 17:28:13 2003 +0000
@@ -233,7 +233,7 @@
 	return ret;
 }
 
-char *xmlnode_to_str(xmlnode *node)
+char *xmlnode_to_str(xmlnode *node, int *len)
 {
 	char *ret;
 	GString *text = g_string_new("");
@@ -264,12 +264,13 @@
 		for(c = node->child; c; c = c->next)
 		{
 			if(c->type == NODE_TYPE_TAG) {
-				esc = xmlnode_to_str(c);
-				g_string_append_printf(text, "%s", esc);
+				int esc_len;
+				esc = xmlnode_to_str(c, &esc_len);
+				text = g_string_append_len(text, esc, esc_len);
 				g_free(esc);
 			} else if(c->type == NODE_TYPE_DATA) {
 				esc = g_markup_escape_text(c->data, c->data_sz);
-				g_string_append_printf(text, "%s", esc);
+				text = g_string_append(text, esc);
 				g_free(esc);
 			}
 		}
@@ -282,6 +283,8 @@
 	g_free(node_name);
 
 	ret = text->str;
+	if(len)
+		*len = text->len;
 	g_string_free(text, FALSE);
 	return ret;
 }