- *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
- if (!*rpnquery)
- {
- size_t off;
- const char *pqf_msg;
- int code = yaz_pqf_error(pp, &pqf_msg, &off);
- yaz_log(LOG_WARN, "PQF Parser Error %s (code %d)",
- pqf_msg, code);
- yaz_pqf_destroy(pp);
- return -1;
- }
- yaz_pqf_destroy(pp);
- }
- else
- {
- const char *addinfo;
- cql_transform_error(m_transform, &addinfo);
- yaz_log(LOG_LOG, "CQL Transform Error %d %s", r,
- addinfo ? addinfo : "");
- return -2;
- }
- }
- return 0;
+ *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
+ if (!*rpnquery)
+ {
+ size_t off;
+ const char *pqf_msg;
+ yaz_pqf_error(pp, &pqf_msg, &off);
+ r = -1;
+ }
+ yaz_pqf_destroy(pp);
+ }
+ else
+ {
+ r = cql_transform_error(m_transform, &addinfo);
+ }
+ }
+ cql_parser_destroy(cp);
+ if (addinfo)
+ *addinfop = odr_strdup(o, addinfo);
+ else
+ *addinfop = 0;
+ return r;