[webkit-dev] gdom_x_path_evaluator_create_ns_resolver [was: webkit #16401]
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Mon Jun 8 08:32:49 PDT 2009
On 6/8/09, Luke Kenneth Casson Leighton <lkcl at lkcl.net> wrote:
> > Well I tried:
> >
> >
> > GdomXPathResult *res;
> > char* exp = "//html:select";
> > GdomDocument *doc = get_dom_document();
> > GdomNodeList *els = gdom_document_get_elements_by_tag_name(doc,
> > "body");
> > GdomNode *body = gdom_node_list_item(els, 0);
> > GdomXPathNSResolver *resolver =
> > gdom_document_create_ns_resolver(doc, body);
> >
> >
> > g_warning("init completed");
> >
> > gdom_document_evaluate(doc, exp, GDOM_NODE(body), resolver, 0, res);
> >
> > The warning is printed followed by a segfault.
> >
> > gdb told me (relevant parts):
> >
> > #0 0x00007fb6215ea058 in g_type_check_instance_cast () from
> > /usr/lib/libgobject-2.0.so.0
> > #1 0x00007fb623d21cb9 in WebKit::core () from
> > /usr/local/lib/libwebkit-1.0.so.2
> > #2 0x00007fb623cc55ab in gdom_document_evaluate () from
> > /usr/local/lib/libwebkit-1.0.so.2
> >
> > It seems like an argument is broken.
>
>
> hmm, i'm guessing it's the uninitialised last argument (from the
> g_type_check_instance_cast) but it could equally, athough unlikely, be
> the body arg.
>
> you really need to recompile some of these object files with debug
> info. try rm DerivedSources/gdom/*GdomDocument*.lo, do export CXX=gcc
> -g -g, re-run configure etc. that will get you _just_ debug info in
> the gdom_document_* functions which will be enough for the purposes
> here, without forcing you to recompile absolutely damn everything.
>
> but yes - try NULL on that last argument (just a guess, here) err
> nope, no can do, there - take a look at
> DerivedSources/gdom/GdomDocument.cpp:
>
>
> GdomXPathResult *
> gdom_document_evaluate (GdomDocument *thiz, gchar * expression,
> GdomNode * context_node, GdomXPathNSResolver * resolver, gushort type,
> GdomXPathResult * in_result)
>
> {
> ....
> ....
> WebCore::XPathResult * _g_in_result = WebKit::core(in_result);
> g_return_val_if_fail (_g_in_result, 0);
> ....
> }
>
> so - nope, in_result cannot be NULL, and you absolutely must _not_
> pass in an uninitialised variable, either.
>
> so - you're going to have to find a GdomXPathResult instance from somewhere.
>
> keep looking around for documentation on this function, i'll do
> likewise: if anyone has anything to contribute that can help leon out,
> it would be appreciated.
>
from a random google search, leading to this:
http://www.faqts.com/knowledge_base/view.phtml/aid/34022
a code snippet is this:
// test with no prefix doesn't find nodes:
var xpathResult = xmlDocument.evaluate(
"//element",
xmlDocument,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
showing that yes, it should be possible to pass in NULL as that last argument.
hmmm, ok, gimme 1 sec, i'll just update CodeGeneratorGObject.pm so it
can accept NULL arguments and pass them on...
More information about the webkit-dev
mailing list