Standalone info viewer parses some index entries incorrectly

ThomB <[email protected]> Sat, 11 Jul 2026 12:48:51 +0000
Newsgroups gmane.comp.tex.texinfo.bugs
Message-ID <eAnyBOTADlpNawLUTtr_OlA63tn3oQIZTGvc_Xcuck58yYWnLfhbZT_PrxUCsUKxaMYXkHfLR2FztiCXYIzFcgtDEFNFmgSbDMKdPBhdmTs=@pm.me>
--b1=_uxJywI38PnafQnS6DO3wggxPcPnsmIil7DFwAqnIQ
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello there.

There is a bug in the standalone info viewer (v7.3) where index entries can=
 be
parsed incorrectly if the target node is del-quoted. You can see this by
issuing, for example:

        info texi2any_internals --index-search xml_accent

You should see a message that the node wasn't found.

It seems to be because DEL is not considered when reading the index entry l=
abel
in `scan_reference_label()` in info/scan.c, causing the scan to continue pa=
st
it. In the example above the label becomes:

        "xml_accent: ^?Texinfo::Convert:"

and so the target node then becomes:

      "Converter Conversion to XML^?"

instead of the label correctly being read as "xml_accent" and the rest as t=
he
node name.

I solved this locally by including '\177' in the delimiter string in the ca=
ll to
`strcspn()` at info/scan.c:1154.

I am not familiar with the rest of the codebase so I'm not sure if this wou=
ld be
the right way to fix it. Nevertheless I'll attempt to attach two diffs you =
can
use if you'd like; one has the described fix, the other adds a test that ch=
ecks
that an index entry with a del-quoted target node is split correctly.

Thomas.







--b1=_uxJywI38PnafQnS6DO3wggxPcPnsmIil7DFwAqnIQ
Content-Type: text/x-patch; name=test_index_label.diff
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=test_index_label.diff

ZGlmZiAtLWdpdCBhL2luZm8vTWFrZWZpbGUuYW0gYi9pbmZvL01ha2VmaWxlLmFtCmluZGV4IDQ2
OGYxOWIzM2EuLjk0Yzk3ZjQyNDIgMTAwNjQ0Ci0tLSBhL2luZm8vTWFrZWZpbGUuYW0KKysrIGIv
aW5mby9NYWtlZmlsZS5hbQpAQCAtMjA2LDYgKzIwNiw3IEBAIGluZm9fdGVzdHMgPSBcCiAJdC9z
cGVjLW1lbnUuc2ggXAogCXQvZW1wdHkuc2ggXAogCXQvaW5kZXgtcGFyZW4uc2ggXAorCXQvcXVv
dGVkLWluZGV4LXRhcmdldC5zaCBcCiAJdC9oZWxwLnNoCiAKIFRFU1RTID0gJChpbmZvX3Rlc3Rz
KQpkaWZmIC0tZ2l0IGEvaW5mby90L2luZm9kaXIvcXVvdGluZy5pbmZvIGIvaW5mby90L2luZm9k
aXIvcXVvdGluZy5pbmZvCmluZGV4IDM5MzQ3YjYzNmYuLmY0NjNlZGYzZDEgMTAwNjQ0Ci0tLSBh
L2luZm8vdC9pbmZvZGlyL3F1b3RpbmcuaW5mbworKysgYi9pbmZvL3QvaW5mb2Rpci9xdW90aW5n
LmluZm8KQEAgLTExLDkgKzExLDIxIEBAIEZpbGU6IHF1b3RpbmcuaW5mbywgIE5vZGU6IFRvcCwg
IE5leHQ6IH9Db2xvbjo6aW4sIG5hbWV/LAogRmlsZTogcXVvdGluZy5pbmZvLCBOb2RlOiB/Q29s
b246OmluLCBuYW1lfwogCiAqTm90ZSAoaW50ZXJhKU5vZGUgMTo6CisKIB8KK0ZpbGU6IHF1b3Rp
bmcuaW5mbywgTm9kZTogSW5kZXgKKworAAhbaW5kZXgACF0KKworKiBNZW51OgorCisqIENvbG9u
OjppbiwgbmFtZTogf0NvbG9uOjppbiwgbmFtZX8KKworHworCiBUYWcgVGFibGU6CiBOb2RlOiBU
b3B/MAogTm9kZTogQ29sb246OmluLCBuYW1lfzI1NgorTm9kZTogSW5kZXh/MzI3CiAfCiBFbmQg
VGFnIFRhYmxlCmRpZmYgLS1naXQgYS9pbmZvL3QvcXVvdGVkLWluZGV4LXRhcmdldC5zaCBiL2lu
Zm8vdC9xdW90ZWQtaW5kZXgtdGFyZ2V0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAuLmEzNjRjY2UzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmZvL3QvcXVvdGVkLWlu
ZGV4LXRhcmdldC5zaApAQCAtMCwwICsxLDMxIEBACisjIS9iaW4vc2gKKyMgQ29weXJpZ2h0IChD
KSAyMDE0LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
ciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisj
CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworc3Jj
ZGlyPSR7c3JjZGlyOi0ufQorLiAkc3JjZGlyL3QvSW5pdC10ZXN0LmluYworCisjIFBlcmZvcm0g
YW4gaW5kZXggc2VhcmNoIGZvciBhIHF1b3RlZCB0YXJnZXQKKyRnaW5mbyAtLWZpbGUgcXVvdGlu
ZyAtLWluZGV4LXNlYXJjaCAiQ29sb246OmluLCBuYW1lIiAtLWFsbCA+JGdpbmZvX291dHB1dAor
CisjIFRlc3QgdGhhdCB0aGUgZm91bmQgaW5kZXggZW50cnkgaGFzIHRoZSBjb3JyZWN0IG5vZGUg
bmFtZS4gQW4gaW5kZXggZW50cnkKKyMgc3BsaXQgaW4gdGhlIHdyb25nIHBsYWNlIHNob3VsZCBu
b3QgbWF0Y2ggdGhpcyBSRSwgcmF0aGVyIGJlIHNoYXBlZCBzb21ldGhpbmcKKyMgbGlrZSAiKiBD
b2xvbjo6aW4sIG5hbWU6IF4/Q29sb246OiAgICAgIGluLiAgICAgKGxpbmUgMCkiCitncmVwICdc
KiBDb2xvbjo6aW4sIG5hbWU6W1s6Ymxhbms6XV1cezEsXH1Db2xvbjo6aW4sIG5hbWUnICRnaW5m
b19vdXRwdXQKKworcmV0dmFsPSQ/CisKK2NsZWFudXAKKwo=

--b1=_uxJywI38PnafQnS6DO3wggxPcPnsmIil7DFwAqnIQ
Content-Type: text/x-patch; name=fix_index_label.diff
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=fix_index_label.diff

ZGlmZiAtLWdpdCBhL2luZm8vc2Nhbi5jIGIvaW5mby9zY2FuLmMKaW5kZXggMWIwMWFiNTIyMC4u
MjRlZjBkZjMxMCAxMDA2NDQKLS0tIGEvaW5mby9zY2FuLmMKKysrIGIvaW5mby9zY2FuLmMKQEAg
LTExNTEsNyArMTE1MSw3IEBAIHNjYW5fcmVmZXJlbmNlX2xhYmVsIChSRUZFUkVOQ0UgKmVudHJ5
LCBpbnQgaW5faW5kZXgpCiAKICAgICAgIHdoaWxlICgxKQogICAgICAgICB7Ci0gICAgICAgICAg
biA9IHN0cmNzcG4gKHAsICI6XG4iKTsKKyAgICAgICAgICBuID0gc3RyY3NwbiAocCwgIlwxNzc6
XG4iKTsKICAgICAgICAgICBpZiAocFtuXSA9PSAnOicpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgIG0gKz0gbiArIDE7Cg==

--b1=_uxJywI38PnafQnS6DO3wggxPcPnsmIil7DFwAqnIQ--