NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/59103: vi(1): search of non-ASCII chars. broken when `:set extended' is set



>Number:         59103
>Category:       bin
>Synopsis:       vi(1): search of non-ASCII chars. broken when `:set extended' is set
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Feb 25 09:35:00 +0000 2025
>Originator:     RVP
>Release:        NetBSD/amd64 10.99.12
>Organization:
>Environment:
NetBSD/amd64 10.99.12
>Description:
When ERE searches are set using `:set extended' in vi(1), searching for
non-ASCII chars. fails to find them in the text.
>How-To-Repeat:
$ LANG=C printf '\xA1 a b c \xA1 c d e \xff\n' > ere.txt
$ LANG=C vi ere.txt
:set extended                   # ERE searches
/<Ctrl-X>A1                     # search for \xA1
:q
$
>Fix:
diff -urN src/external/bsd/nvi.orig/dist/regex/regcomp.c src/external/bsd/nvi/dist/regex/regcomp.c
--- src/external/bsd/nvi.orig/dist/regex/regcomp.c	2021-05-17 04:01:57.000000000 +0000
+++ src/external/bsd/nvi/dist/regex/regcomp.c	2025-02-25 08:56:21.645965752 +0000
@@ -307,7 +307,7 @@
                          
          			/* character this ERE should end at */
 {
-	char c;
+	unsigned char c;
 	sopno prevback = 0;
 	sopno prevfwd = 0;
 	sopno conc;
@@ -356,7 +356,7 @@
 static void
 p_ere_exp(struct parse *p, size_t reclimit)
 {
-	char c;
+	unsigned char c;
 	sopno pos;
 	int count;
 	int count2;



Home | Main Index | Thread Index | Old Index