A patch from Aaron Lehmann <aaronl@vitelus.com> to fix a
crash on a broken regexp.
This commit is contained in:
parent
4819c3d477
commit
ddb00545b7
10
editors/vi.c
10
editors/vi.c
@ -19,7 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
char *vi_Version =
|
char *vi_Version =
|
||||||
"$Id: vi.c,v 1.7 2001/05/07 22:57:47 andersen Exp $";
|
"$Id: vi.c,v 1.8 2001/05/13 00:48:09 andersen Exp $";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To compile for standalone use:
|
* To compile for standalone use:
|
||||||
@ -2076,8 +2076,10 @@ static void colon(Byte * buf)
|
|||||||
c = orig_buf[1]; // what is the delimiter
|
c = orig_buf[1]; // what is the delimiter
|
||||||
F = orig_buf + 2; // start of "find"
|
F = orig_buf + 2; // start of "find"
|
||||||
R = (Byte *) strchr((char *) F, c); // middle delimiter
|
R = (Byte *) strchr((char *) F, c); // middle delimiter
|
||||||
|
if (!R) goto colon_s_fail;
|
||||||
*R++ = '\0'; // terminate "find"
|
*R++ = '\0'; // terminate "find"
|
||||||
buf1 = (Byte *) strchr((char *) R, c);
|
buf1 = (Byte *) strchr((char *) R, c);
|
||||||
|
if (!buf1) goto colon_s_fail;
|
||||||
*buf1++ = '\0'; // terminate "replace"
|
*buf1++ = '\0'; // terminate "replace"
|
||||||
if (*buf1 == 'g') { // :s/foo/bar/g
|
if (*buf1 == 'g') { // :s/foo/bar/g
|
||||||
buf1++;
|
buf1++;
|
||||||
@ -2168,6 +2170,12 @@ static void colon(Byte * buf)
|
|||||||
vc1:
|
vc1:
|
||||||
dot = bound_dot(dot); // make sure "dot" is valid
|
dot = bound_dot(dot); // make sure "dot" is valid
|
||||||
return;
|
return;
|
||||||
|
#ifdef BB_FEATURE_VI_SEARCH
|
||||||
|
colon_s_fail:
|
||||||
|
psb(":s expression missing delimiters");
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Hit_Return(void)
|
static void Hit_Return(void)
|
||||||
|
10
vi.c
10
vi.c
@ -19,7 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
char *vi_Version =
|
char *vi_Version =
|
||||||
"$Id: vi.c,v 1.7 2001/05/07 22:57:47 andersen Exp $";
|
"$Id: vi.c,v 1.8 2001/05/13 00:48:09 andersen Exp $";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To compile for standalone use:
|
* To compile for standalone use:
|
||||||
@ -2076,8 +2076,10 @@ static void colon(Byte * buf)
|
|||||||
c = orig_buf[1]; // what is the delimiter
|
c = orig_buf[1]; // what is the delimiter
|
||||||
F = orig_buf + 2; // start of "find"
|
F = orig_buf + 2; // start of "find"
|
||||||
R = (Byte *) strchr((char *) F, c); // middle delimiter
|
R = (Byte *) strchr((char *) F, c); // middle delimiter
|
||||||
|
if (!R) goto colon_s_fail;
|
||||||
*R++ = '\0'; // terminate "find"
|
*R++ = '\0'; // terminate "find"
|
||||||
buf1 = (Byte *) strchr((char *) R, c);
|
buf1 = (Byte *) strchr((char *) R, c);
|
||||||
|
if (!buf1) goto colon_s_fail;
|
||||||
*buf1++ = '\0'; // terminate "replace"
|
*buf1++ = '\0'; // terminate "replace"
|
||||||
if (*buf1 == 'g') { // :s/foo/bar/g
|
if (*buf1 == 'g') { // :s/foo/bar/g
|
||||||
buf1++;
|
buf1++;
|
||||||
@ -2168,6 +2170,12 @@ static void colon(Byte * buf)
|
|||||||
vc1:
|
vc1:
|
||||||
dot = bound_dot(dot); // make sure "dot" is valid
|
dot = bound_dot(dot); // make sure "dot" is valid
|
||||||
return;
|
return;
|
||||||
|
#ifdef BB_FEATURE_VI_SEARCH
|
||||||
|
colon_s_fail:
|
||||||
|
psb(":s expression missing delimiters");
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Hit_Return(void)
|
static void Hit_Return(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user