]> git.cameronkatri.com Git - mandoc.git/blobdiff - roff.c
Bugfix in roff_setstrn():
[mandoc.git] / roff.c
diff --git a/roff.c b/roff.c
index 07480a12c44bc5cafc5f56b828553b35f72928e9..30e923098edf90b9cf067b56a2690f2d8a8554d0 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/*     $Id: roff.c,v 1.209 2014/04/23 16:08:33 schwarze Exp $ */
+/*     $Id: roff.c,v 1.211 2014/06/29 21:20:31 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -1938,7 +1938,8 @@ roff_so(ROFF_ARGS)
 {
        char *name;
 
 {
        char *name;
 
-       mandoc_msg(MANDOCERR_SO, r->parse, ln, ppos, NULL);
+       name = *bufp + pos;
+       mandoc_vmsg(MANDOCERR_SO, r->parse, ln, ppos, ".so %s", name);
 
        /*
         * Handle `so'.  Be EXTREMELY careful, as we shouldn't be
 
        /*
         * Handle `so'.  Be EXTREMELY careful, as we shouldn't be
@@ -1947,9 +1948,9 @@ roff_so(ROFF_ARGS)
         * or using absolute paths.
         */
 
         * or using absolute paths.
         */
 
-       name = *bufp + pos;
        if ('/' == *name || strstr(name, "../") || strstr(name, "/..")) {
        if ('/' == *name || strstr(name, "../") || strstr(name, "/..")) {
-               mandoc_msg(MANDOCERR_SOPATH, r->parse, ln, pos, NULL);
+               mandoc_vmsg(MANDOCERR_SO_PATH, r->parse, ln, ppos,
+                   ".so %s", name);
                return(ROFF_ERR);
        }
 
                return(ROFF_ERR);
        }
 
@@ -2067,7 +2068,8 @@ roff_setstrn(struct roffkv **r, const char *name, size_t namesz,
        /* Search for an existing string with the same name. */
        n = *r;
 
        /* Search for an existing string with the same name. */
        n = *r;
 
-       while (n && strcmp(name, n->key.p))
+       while (n && (namesz != n->key.sz ||
+                       strncmp(n->key.p, name, namesz)))
                n = n->next;
 
        if (NULL == n) {
                n = n->next;
 
        if (NULL == n) {