mirror of https://github.com/tildeclub/ex-vi.git
loconv() did not terminate strings when copying
This commit is contained in:
parent
a2e6b9bf06
commit
ac7a080336
17
ex_re.c
17
ex_re.c
|
@ -73,7 +73,7 @@
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#ifdef DOSCCS
|
#ifdef DOSCCS
|
||||||
static char sccsid[] = "@(#)ex_re.c 1.53 (gritter) 2/20/05";
|
static char sccsid[] = "%W% (gritter) %G%";
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -131,10 +131,11 @@ loconv(register char *dst, register const char *src)
|
||||||
wchar_t wc;
|
wchar_t wc;
|
||||||
int len, i, nlen;
|
int len, i, nlen;
|
||||||
|
|
||||||
while (*src) {
|
for (;;) {
|
||||||
if ((*src & 0200) == 0) {
|
if ((*src & 0200) == 0) {
|
||||||
*dst++ = tolower(*src);
|
*dst++ = tolower(*src);
|
||||||
src++;
|
if (*src++ == '\0')
|
||||||
|
break;
|
||||||
} else if ((len = mbtowc(&wc, src, mb_cur_max)) <= 0) {
|
} else if ((len = mbtowc(&wc, src, mb_cur_max)) <= 0) {
|
||||||
*dst++ = *src++;
|
*dst++ = *src++;
|
||||||
} else {
|
} else {
|
||||||
|
@ -160,10 +161,9 @@ loconv(register char *dst, register const char *src)
|
||||||
} else
|
} else
|
||||||
#endif /* MB */
|
#endif /* MB */
|
||||||
{
|
{
|
||||||
while (*src) {
|
do
|
||||||
*dst++ = tolower(*src & 0377);
|
*dst++ = tolower(*src & 0377);
|
||||||
src++;
|
while (*src++);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return dst - odst;
|
return dst - odst;
|
||||||
}
|
}
|
||||||
|
@ -936,12 +936,16 @@ compile1(void)
|
||||||
if ((n = regcomp(re.Expbuf, re.Patbuf, re.Flags)) != 0) {
|
if ((n = regcomp(re.Expbuf, re.Patbuf, re.Flags)) != 0) {
|
||||||
switch (n) {
|
switch (n) {
|
||||||
case REG_EBRACK:
|
case REG_EBRACK:
|
||||||
|
free(re.Expbuf);
|
||||||
|
re.Expbuf = 0;
|
||||||
cerror(catgets(catd, 1, 154, "Missing ]"));
|
cerror(catgets(catd, 1, 154, "Missing ]"));
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
regerror(n, re.Expbuf, &re.Patbuf[1],
|
regerror(n, re.Expbuf, &re.Patbuf[1],
|
||||||
sizeof re.Patbuf - 1);
|
sizeof re.Patbuf - 1);
|
||||||
|
free(re.Expbuf);
|
||||||
|
re.Expbuf = 0;
|
||||||
cerror(&re.Patbuf[1]);
|
cerror(&re.Patbuf[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -961,6 +965,7 @@ compile1(void)
|
||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
char *cp;
|
char *cp;
|
||||||
free(re.Expbuf);
|
free(re.Expbuf);
|
||||||
|
re.Expbuf = 0;
|
||||||
switch (regerrno) {
|
switch (regerrno) {
|
||||||
case 11:
|
case 11:
|
||||||
cp = "Range endpoint too large|Range endpoint "
|
cp = "Range endpoint too large|Range endpoint "
|
||||||
|
|
Loading…
Reference in New Issue