]> git.cameronkatri.com Git - mandoc.git/commitdiff
Three fixes with respect to the names table:
authorIngo Schwarze <schwarze@openbsd.org>
Wed, 19 Nov 2014 20:40:51 +0000 (20:40 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Wed, 19 Nov 2014 20:40:51 +0000 (20:40 +0000)
1. Do not mask out NAME_FIRST before its first use.
2. Avoid duplicate NAME_FILE entries.
3. Correctly mask NAME_FILE for .so links.

mandocdb.c

index 10e64e540dfaca0d76c1cf7197eac0d733943e22..7d9caf23b68dcd9cf34d503f50142ec40329e67f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mandocdb.c,v 1.168 2014/10/28 17:36:19 schwarze Exp $ */
+/*     $Id: mandocdb.c,v 1.169 2014/11/19 20:40:51 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -138,6 +138,7 @@ struct      mdoc_handler {
 static void     dbclose(int);
 static void     dbadd(struct mpage *, struct mchars *);
 static void     dbadd_mlink(const struct mlink *mlink);
+static void     dbadd_mlink_name(const struct mlink *mlink);
 static int      dbopen(int);
 static void     dbprune(void);
 static void     filescan(const char *);
@@ -1153,7 +1154,7 @@ mpages_merge(struct mchars *mc, struct mparse *mp)
                                         */
 
                                        if (mpage_dest->pageid)
-                                               dbadd_mlink(mlink);
+                                               dbadd_mlink_name(mlink);
 
                                        if (NULL == mlink->next)
                                                break;
@@ -1728,7 +1729,8 @@ putkeys(const struct mpage *mpage,
        if (TYPE_Nm & v) {
                htab = &names;
                v &= name_mask;
-               name_mask &= ~NAME_FIRST;
+               if (v & NAME_FIRST)
+                       name_mask &= ~NAME_FIRST;
                if (debug > 1)
                        say(mpage->mlinks->file,
                            "Adding name %*s", sz, cp);
@@ -1943,9 +1945,17 @@ dbadd_mlink(const struct mlink *mlink)
        SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid);
        SQL_STEP(stmts[STMT_INSERT_LINK]);
        sqlite3_reset(stmts[STMT_INSERT_LINK]);
+}
+
+static void
+dbadd_mlink_name(const struct mlink *mlink)
+{
+       size_t           i;
+
+       dbadd_mlink(mlink);
 
        i = 1;
-       SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, NAME_FILE);
+       SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, NAME_FILE & NAME_MASK);
        SQL_BIND_TEXT(stmts[STMT_INSERT_NAME], i, mlink->name);
        SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, mlink->mpage->pageid);
        SQL_STEP(stmts[STMT_INSERT_NAME]);