=================================================================== RCS file: /cvs/mandoc/mansearch.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -p -r1.32 -r1.33 --- mandoc/mansearch.c 2014/04/16 21:36:18 1.32 +++ mandoc/mansearch.c 2014/04/17 19:20:01 1.33 @@ -1,4 +1,4 @@ -/* $Id: mansearch.c,v 1.32 2014/04/16 21:36:18 schwarze Exp $ */ +/* $Id: mansearch.c,v 1.33 2014/04/17 19:20:01 schwarze Exp $ */ /* * Copyright (c) 2012 Kristaps Dzonsons * Copyright (c) 2013, 2014 Ingo Schwarze @@ -590,7 +590,7 @@ exprcomp(const struct mansearch *search, int argc, cha first = cur = NULL; logic = igncase = toclose = 0; - toopen = 1; + toopen = NULL != search->sec || NULL != search->arch; for (i = 0; i < argc; i++) { if (0 == strcmp("(", argv[i])) { @@ -659,9 +659,12 @@ exprcomp(const struct mansearch *search, int argc, cha if (toopen || logic || igncase || toclose) goto fail; - cur->close++; - cur = exprspec(cur, TYPE_arch, search->arch, "^(%s|any)$"); - exprspec(cur, TYPE_sec, search->sec, "^%s$"); + if (NULL != search->sec || NULL != search->arch) + cur->close++; + if (NULL != search->arch) + cur = exprspec(cur, TYPE_arch, search->arch, "^(%s|any)$"); + if (NULL != search->sec) + exprspec(cur, TYPE_sec, search->sec, "^%s$"); return(first); @@ -678,9 +681,6 @@ exprspec(struct expr *cur, uint64_t key, const char *v char errbuf[BUFSIZ]; char *cp; int irc; - - if (NULL == value) - return(cur); mandoc_asprintf(&cp, format, value); cur->next = mandoc_calloc(1, sizeof(struct expr));