Hi, On Tuesday 26 August 2014 09:34:42 Shahar Havivi wrote: > I am trying to add xmlXPathRegisterNs() to v2v/xml-c.c but I get a seg > fault, the signature should be: > http://xmlsoft.org/html/libxml-xpathInternals.html#xmlXPathRegisterNs > > I think I am wrong in CAMLparam and CAMLlocal..., > Following is the patch: > > ====================================================================== > diff --git a/v2v/xml-c.c b/v2v/xml-c.c > index 4c9bc77..a917c24 100644 > --- a/v2v/xml-c.c > +++ b/v2v/xml-c.c > @@ -141,6 +141,16 @@ v2v_xml_xpath_new_context (value docv) > } > > value > +v2v_xml_xpath_register_ns (value prefix, value uri, value xpathctx) > +{ > + CAMLparam3 (prefix, uri, xpathctx); > + CAMLlocal1 (retval); > + retval = xmlXPathRegisterNs (BAD_CAST String_val (prefix), BAD_CAST > String_val (uri), xpathctx); > + > + CAMLreturn (retval); > +} > +
First of all, you are using the xpathctx parameter directly as parameter for xmlXPathRegisterNs, while it is an OCaml value which wraps the actual object; see how it is done in e.g. v2v_xml_xpath_eval_expression, using the Xpathctx_val macro. Second, the order of the arguments in your xmlXPathRegisterNs is wrong: - yours: xmlXPathRegisterNs(prefix, uri, ctxt) - actual function: xmlXPathRegisterNs(ctxt, prefix, uri) -- Pino Toscano _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
