summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Dominik Braun <PromyLOPh@gmail.com>2008-06-13 20:39:13 +0200
committerLars-Dominik Braun <PromyLOPh@gmail.com>2008-06-13 20:39:13 +0200
commitb1ea463843add37874f9768b606825504cdc8eb2 (patch)
treef71f94b967ddc7bf23a174b2ad37db0ffa80ab3d
parent481f0cdcd0fb33a35865dd8ab30aae6c74f84f20 (diff)
downloadpianobar-b1ea463843add37874f9768b606825504cdc8eb2.tar.gz
pianobar-b1ea463843add37874f9768b606825504cdc8eb2.tar.bz2
pianobar-b1ea463843add37874f9768b606825504cdc8eb2.zip
Hopefully fixed wrong libxml2 usage
We did a xmlCleanupParser () call everytime we finished parsing; this is wrong (http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser)
-rw-r--r--libpiano/main.c8
-rw-r--r--libpiano/xml.c5
-rw-r--r--src/Makefile.am4
-rw-r--r--src/main.c4
4 files changed, 12 insertions, 9 deletions
diff --git a/libpiano/main.c b/libpiano/main.c
index e475b59..cc4e65a 100644
--- a/libpiano/main.c
+++ b/libpiano/main.c
@@ -32,7 +32,9 @@ THE SOFTWARE.
#include "xml.h"
#include "crypt.h"
-/* initialize piano handle, set up curl handle and settings
+/* initialize piano handle, set up curl handle and settings; note: you
+ * _must_ init curl and libxml2 using curl_global_init (CURL_GLOBAL_SSL)
+ * and xmlInitParser (), you also _must_ cleanup their garbage on your own!
* @author PromyLOPh
* @added 2008-06-05
* @param piano handle
@@ -140,7 +142,9 @@ void PianoDestroyPlaylist (PianoHandle_t *ph) {
ph->playlist = NULL;
}
-/* frees the whole piano handle structure
+/* frees the whole piano handle structure; this will _not_ cleanup curl's
+ * internal garbage, you have to call curl_global_cleanup () and
+ * xmlCleanupParser () for libxml2
* @author PromyLOPh
* @added 2008-06-05
* @param piano handle
diff --git a/libpiano/xml.c b/libpiano/xml.c
index 048f792..6f8cb55 100644
--- a/libpiano/xml.c
+++ b/libpiano/xml.c
@@ -203,7 +203,6 @@ void PianoXmlParseUserinfo (PianoHandle_t *ph, char *xml) {
PianoXmlStructParser (structRoot, PianoXmlParseUserinfoCb, &ph->user);
xmlFreeDoc (doc);
- xmlCleanupParser();
}
/* parse stations returned by pandora
@@ -244,7 +243,6 @@ void PianoXmlParseStations (PianoHandle_t *ph, char *xml) {
}
xmlFreeDoc (doc);
- xmlCleanupParser();
}
/* parses playlist; used when searching too
@@ -284,7 +282,6 @@ void PianoXmlParsePlaylist (PianoHandle_t *ph, char *xml) {
}
xmlFreeDoc (doc);
- xmlCleanupParser();
}
/* parse simple answers like this: <?xml version="1.0" encoding="UTF-8"?>
@@ -310,7 +307,6 @@ PianoReturn_t PianoXmlParseSimple (char *xml) {
}
xmlFreeDoc (doc);
- xmlCleanupParser();
return ret;
}
@@ -413,7 +409,6 @@ void PianoXmlParseSearch (char *searchXml,
PianoXmlStructParser (structRoot, PianoXmlParseSearchCb, searchResult);
xmlFreeDoc (doc);
- xmlCleanupParser();
}
/* encode reserved xml chars
diff --git a/src/Makefile.am b/src/Makefile.am
index fbd184c..20b5b40 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,6 @@
bin_PROGRAMS = pianobar
pianobar_SOURCES = main.c
-pianobar_CPPFLAGS = ${LIBCURL_CFLAGS} ${LIBAO_CFLAGS} -I../libpiano
-pianobar_LDADD = ${LIBCURL_LIBS} ${LIBAO_LIBS} ${LIBFAAD_LIBS} ${LIBREADLINE_LIBS} -lpthread ../libpiano/libpiano.la
+pianobar_CPPFLAGS = ${LIBCURL_CFLAGS} ${LIBAO_CFLAGS} ${LIBXML_CFLAGS} -I../libpiano
+pianobar_LDADD = ${LIBCURL_LIBS} ${LIBAO_LIBS} ${LIBFAAD_LIBS} ${LIBREADLINE_LIBS} ${LIBXML_LIBS} -lpthread ../libpiano/libpiano.la
diff --git a/src/main.c b/src/main.c
index 0dcac22..314748f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -22,6 +22,8 @@ THE SOFTWARE.
#include <piano.h>
#include <curl/curl.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@@ -240,6 +242,7 @@ int main (int argc, char **argv) {
/* init some things */
curl_global_init (CURL_GLOBAL_SSL);
+ xmlInitParser ();
ao_initialize();
PianoInit (&ph);
@@ -384,6 +387,7 @@ int main (int argc, char **argv) {
PianoDestroy (&ph);
curl_global_cleanup ();
ao_shutdown();
+ xmlCleanupParser ();
return 0;
}