summaryrefslogtreecommitdiffstats
path: root/database/sqlite/sqlite.c
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-03-29 00:07:45 +0100
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-03-29 00:07:45 +0100
commitbf152fe270a195bddb14010662995560e1edb481 (patch)
tree09e3b2937775153cb988beebebb175d028064e7b /database/sqlite/sqlite.c
parent5f208d0f6c0281569f14299965beff12807272c6 (diff)
downloadeurephia-bf152fe270a195bddb14010662995560e1edb481.tar.gz
eurephia-bf152fe270a195bddb14010662995560e1edb481.tar.xz
eurephia-bf152fe270a195bddb14010662995560e1edb481.zip
Fixed some possible issues with the XML implementation, regarding UTF-8
Do proper conversion from char * to xmlChar *. Need to figure out a better way how to return xmlChar * to char * when returning strings which may contain UTF-8.
Diffstat (limited to 'database/sqlite/sqlite.c')
-rw-r--r--database/sqlite/sqlite.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/database/sqlite/sqlite.c b/database/sqlite/sqlite.c
index fce70ad..be86642 100644
--- a/database/sqlite/sqlite.c
+++ b/database/sqlite/sqlite.c
@@ -495,16 +495,31 @@ char *sqlite_get_value(dbresult *res, int row, int col) {
#ifdef HAVE_LIBXML2
-xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *name, dbresult *res, int row, int col) {
+xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *inname, dbresult *res, int row, int col) {
+ xmlChar *name = NULL, *data = NULL;
+ xmlNodePtr retnode = NULL;
+
+ name = xmlCharStrdup(inname);
+ assert( name != NULL );
+
+ data = xmlCharStrdup(sqlite_get_value(res, row, col));
+
switch( xmltyp ) {
case XML_ATTR:
- xmlNewProp(node, (xmlChar *)name, (xmlChar *) sqlite_get_value(res, row, col));
- return node;
+ xmlNewProp(node, name, data);
+ retnode = node;
+ break;
case XML_NODE:
- return xmlNewChild(node, NULL, (xmlChar *) name, (xmlChar *)sqlite_get_value(res, row, col));
+ retnode = xmlNewChild(node, NULL, name, data);
+ break;
+
+ default:
+ retnode = NULL;
}
- return NULL;
+ free_nullsafe(data);
+ free_nullsafe(name);
+ return retnode;
}
#endif