X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fpquery.c;h=65dcdd126a77428c27aa29e6408fb4e1926767d4;hp=3004c24f7412dd2447bdb3f523caeb5fae96cadf;hb=b6aa93dcb5c07ed09b664c006b5f33b0135a0854;hpb=ae61397330cc9b5ecb90c6f385dd6f22d4037021 diff --git a/src/pquery.c b/src/pquery.c index 3004c24..65dcdd1 100644 --- a/src/pquery.c +++ b/src/pquery.c @@ -826,24 +826,20 @@ Z_AttributeList *yaz_pqf_scan_attribute_list(YAZ_PQF_Parser p, ODR o, static Z_FacetField* parse_facet(ODR odr, const char *facet, int length) { YAZ_PQF_Parser pqf_parser = yaz_pqf_create(); - char buffer[length+1]; + char *buffer = odr_strdupn(odr, facet, length); Odr_oid *attributeSetId; - Z_FacetField *facet_field; - Z_AttributeList *attribute_list; - memcpy(buffer, facet, length); - buffer[length] = '\0'; - attribute_list = yaz_pqf_scan_attribute_list(pqf_parser, odr, &attributeSetId, buffer); - - if (!attribute_list) { - printf("Invalid facet definition: %s", facet); - return 0; + Z_FacetField *facet_field = 0; + Z_AttributeList *attribute_list = + yaz_pqf_scan_attribute_list(pqf_parser, odr, &attributeSetId, buffer); + + if (attribute_list) + { + facet_field = odr_malloc(odr, sizeof(*facet_field)); + facet_field->attributes = attribute_list; + facet_field->num_terms = 0; + facet_field->terms = 0; } - facet_field = odr_malloc(odr, sizeof(*facet_field)); - facet_field->attributes = attribute_list; - facet_field->num_terms = 0; - facet_field->terms = 0; - //debug_add_facet_term(odr, facet_field); - + yaz_pqf_destroy(pqf_parser); return facet_field; }