On 6/8/09, Leon Winter <l...@ring0.de> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > Leon Winter wrote: > > Hi, > >> GdomXPathNSResolver *resolver = > >> gdom_x_path_evaluator_create_ns_resolver(doc, body); > > > >> l. > > Yeah minor mistake from my side (sorry for that), anyway it > > segfaults since we cannot initialize GdomXPathEvaluator (as told > > before). > > > > Regards, Leon Winter > > Hi, > > I just checked the header-files and I found out, that it was not my > mistake actually, since there are two functions: > > WEBKIT_API GdomXPathNSResolver * > gdom_x_path_evaluator_create_ns_resolver (GdomXPathEvaluator *thiz, > GdomNode * node_resolver); > > > WEBKIT_API GdomXPathNSResolver * > gdom_document_create_ns_resolver (GdomDocument *thiz, GdomNode * > node_resolver); > > > Anyway we cannot use XPath at the moment because we need a > (GdomXPathEvaluator object: > > WEBKIT_API GdomXPathResult * > gdom_x_path_evaluator_evaluate (GdomXPathEvaluator *thiz, gchar * > expression, GdomNode * context_node, GdomXPathNSResolver * resolver, > gushort type, GdomXPathResult * in_result);
not being funny or anything, but are you _sure_ you need a GdomXPathEvaluator object? if you look in GdomDocument.h, yo can see this: WEBKIT_API GdomXPathResult * gdom_document_evaluate (GdomDocument *thiz, gchar * expression, GdomNode * context_node, GdomXPathNSResolver * resolver, gushort type, GdomXPathResult * in_result); which again looks pretty damn similar to the [isolated and inaccessible] gdom_x_path_evaluator_evaluate function, to me :) cut/pasting in another [relevant] discussion into this one thread: > [....] > Erm, nope. > The initial code was: > > GdomXPathResult *res; > GdomXPathEvaluator evaluator; > 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_x_path_evaluator_create_ns_resolver(&evaluator, body); // > segfaults because we cannot init evaluator > > And I quote myself (mail from 2009-06-07 01:18 in my UTC+1 timezone) > > "segfaults right at the last line. I found new creation methid for > GdomXPathEvaluator, perhaps there should be one." > > I mentioned GdomXPathEvaluator :) ok, let me try and walk it through. in GdomXPathEvaluator.h, you have this: WEBKIT_API GdomXPathNSResolver * gdom_x_path_evaluator_create_ns_resolver (GdomXPathEvaluator *thiz, GdomNode * node_resolver); and in GdomDocument, mark indirectly points out that you have this: WEBKIT_API GdomXPathNSResolver * gdom_document_create_ns_resolver (GdomDocument *thiz, GdomNode * node_resolver); so - uhnnn.. oh. ah. oops. ok - can anyone explain what the difference between an XPathNSResolver return result from Document.createNSResolver and from XPathEvaluator.createNSResolver is? can leon just use gdom_document_create_ns_resolver() and basically completely ignore the (self-contained and apparently isolated) XPathNSEvaluator class and (inaccessible) functions? 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); /* now you use this */ res = gdom_document_evaluate (doc, expression, GDOM_NODE(context_node), resolver, gushort type, in_result); */ btw leon, it's worth reiterating: you really must use pointers to glib objects, they get refcounted and automatically freed etc. etc. if you put stuff on the stack like this: GdomXPathEvaluator evaluator; you will get into an awful mess. l. _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev