Erreur de segmentation avec libxml2
Bonjour tout le monde,
J'ai une erreur de segmentation que je ne comprend pas. :cry:
Voilà, j'ai une fonction suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
gchar *getRef(xmlDocPtr doc, gint id){
xmlXPathContextPtr xmlperms_context = NULL;
xmlXPathObjectPtr xmlobject;
const char path_template[] = "/catalogue/article[%d]/ref/text()";
xmlChar *path;
gchar *pRef;
xmlXPathInit();
xmlperms_context = xmlXPathNewContext(doc);
path = (xmlChar*)g_strdup_printf(path_template, id);
xmlobject = xmlXPathEval(path, xmlperms_context);
if(xmlobject->nodesetval){
pRef = g_strdup_printf("%s", (char *)xmlobject->nodesetval->nodeTab[0]->content);
xmlFree(path);
xmlXPathFreeObject(xmlobject);
xmlXPathFreeContext(xmlperms_context);
return pRef;
}
else{
xmlFree(path);
xmlXPathFreeObject(xmlobject);
xmlXPathFreeContext(xmlperms_context);
return NULL;
}
} |
Lorsque j'appelle la fonction une première fois, je n'ai pas d'erreur et j'ai bien le resultat attendu. Mais, par contre, au second appel, j'ai droit à une erreur de segmentation. A l'aide de GDB, j'ai remarqué que cette erreur arrive après l'initialisation de XPath. Donc, pendant l'initialisation de contexte. 8O
Je ne comprend pas :(.
Merci d'avance.