diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2016-08-17 18:59:37 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2016-08-17 18:59:37 +0000 |
commit | eccbe40515e1ca229e250d389f02e0395c281098 (patch) | |
tree | 1a9e67925ac25b339a927582d29feca6acb42c78 | |
parent | 77472d81dfad0b0e6e871a1beaf35cfcfd6a9067 (diff) | |
download | mandoc-eccbe40515e1ca229e250d389f02e0395c281098.tar.gz |
When reading back a mandoc.db(5) file in order to apply incremental
changes, do not prepend a stray NAME_FILE (0x10) byte to the first
names of pages.
Bug found while investigating another issue reported by sthen@.
-rw-r--r-- | dba.c | 3 | ||||
-rw-r--r-- | dba_read.c | 5 |
2 files changed, 4 insertions, 4 deletions
@@ -143,7 +143,8 @@ dba_page_new(struct dba_array *pages, const char *name, const char *sect, page = dba_array_new(DBP_MAX, 0); entry = dba_array_new(1, DBA_STR | DBA_GROW); - dba_array_add(entry, prepend(name, NAME_FILE & NAME_MASK)); + if (name != NULL) + dba_array_add(entry, prepend(name, NAME_FILE & NAME_MASK)); dba_array_add(page, entry); entry = dba_array_new(1, DBA_STR | DBA_GROW); dba_array_add(entry, (void *)sect); @@ -48,10 +48,9 @@ dba_read(const char *fname) dba = dba_new(npages < 128 ? 128 : npages); for (ip = 0; ip < npages; ip++) { pdata = dbm_page_get(ip); - page = dba_page_new(dba->pages, pdata->name, pdata->sect, + page = dba_page_new(dba->pages, NULL, pdata->sect, pdata->arch, pdata->desc, pdata->file + 1, *pdata->file); - cp = pdata->name; - while (*(cp = strchr(cp, '\0') + 1) != '\0') + for (cp = pdata->name; *cp != '\0'; cp = strchr(cp, '\0') + 1) dba_page_add(page, DBP_NAME, cp); cp = pdata->sect; while (*(cp = strchr(cp, '\0') + 1) != '\0') |