summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/xml/tools.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index 00425043..b31e7187 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -1146,6 +1146,10 @@ lasso_concat_url_query(const char *url, const char *query)
}
}
+static void structuredErrorFunc (void *userData, xmlErrorPtr error) {
+ *(int*)userData = error->code;
+}
+
/**
* lasso_eval_xpath_expression:
* @xpath_ctx: the XPath context object
@@ -1169,10 +1173,6 @@ lasso_eval_xpath_expression(xmlXPathContextPtr xpath_ctx, const char *expression
xmlStructuredErrorFunc oldStructuredErrorFunc;
gboolean rc = TRUE;
- void structuredErrorFunc (G_GNUC_UNUSED void *userData, xmlErrorPtr error) {
- errorCode = error->code;
- }
-
g_return_val_if_fail(xpath_ctx != NULL && expression != NULL, FALSE);
if (xpath_error_code) { /* reset */
@@ -1180,8 +1180,10 @@ lasso_eval_xpath_expression(xmlXPathContextPtr xpath_ctx, const char *expression
}
oldStructuredErrorFunc = xpath_ctx->error;
xpath_ctx->error = structuredErrorFunc;
+ xpath_ctx->userData = &errorCode;
xpath_object = xmlXPathEvalExpression((xmlChar*)expression, xpath_ctx);
xpath_ctx->error = oldStructuredErrorFunc;
+ xpath_ctx->userData = NULL;
if (xpath_object) {
if (xpath_object_ptr) {