mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y (yyerror): limit error message length. [ruby-dev:31848]
* regex.c (re_mbc_startpos): separated from re_adjust_startpos. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b0001e9212
commit
8ca32b6e6e
4 changed files with 55 additions and 23 deletions
|
@ -1,3 +1,9 @@
|
|||
Wed Sep 26 05:12:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* parse.y (yyerror): limit error message length. [ruby-dev:31848]
|
||||
|
||||
* regex.c (re_mbc_startpos): separated from re_adjust_startpos.
|
||||
|
||||
Mon Sep 24 16:52:11 2007 Urabe Shyouhei <shyouhei@ruby-lang.org>
|
||||
|
||||
* lib/net/http.rb: fix typo.
|
||||
|
|
29
parse.y
29
parse.y
|
@ -2516,7 +2516,9 @@ static int
|
|||
yyerror(msg)
|
||||
const char *msg;
|
||||
{
|
||||
char *p, *pe, *buf;
|
||||
const int max_line_margin = 30;
|
||||
const char *p, *pe;
|
||||
char *buf;
|
||||
int len, i;
|
||||
|
||||
rb_compile_error("%s", msg);
|
||||
|
@ -2535,17 +2537,32 @@ yyerror(msg)
|
|||
|
||||
len = pe - p;
|
||||
if (len > 4) {
|
||||
char *p2;
|
||||
const char *pre = "", *post = "";
|
||||
|
||||
if (len > max_line_margin * 2 + 10) {
|
||||
int re_mbc_startpos _((const char *, int, int, int));
|
||||
if ((len = lex_p - p) > max_line_margin) {
|
||||
p = p + re_mbc_startpos(p, len, len - max_line_margin, 0);
|
||||
pre = "...";
|
||||
}
|
||||
if ((len = pe - lex_p) > max_line_margin) {
|
||||
pe = lex_p + re_mbc_startpos(lex_p, len, max_line_margin, 1);
|
||||
post = "...";
|
||||
}
|
||||
len = pe - p;
|
||||
}
|
||||
buf = ALLOCA_N(char, len+2);
|
||||
MEMCPY(buf, p, char, len);
|
||||
buf[len] = '\0';
|
||||
rb_compile_error_append("%s", buf);
|
||||
rb_compile_error_append("%s%s%s", pre, buf, post);
|
||||
|
||||
i = lex_p - p;
|
||||
p = buf; pe = p + len;
|
||||
p2 = buf; pe = buf + len;
|
||||
|
||||
while (p < pe) {
|
||||
if (*p != '\t') *p = ' ';
|
||||
p++;
|
||||
while (p2 < pe) {
|
||||
if (*p2 != '\t') *p2 = ' ';
|
||||
p2++;
|
||||
}
|
||||
buf[i] = '^';
|
||||
buf[i+1] = '\0';
|
||||
|
|
37
regex.c
37
regex.c
|
@ -3108,6 +3108,28 @@ re_compile_fastmap(bufp)
|
|||
}
|
||||
|
||||
/* adjust startpos value to the position between characters. */
|
||||
int
|
||||
re_mbc_startpos(string, size, startpos, range)
|
||||
const char *string;
|
||||
int size, startpos, range;
|
||||
{
|
||||
int i = mbc_startpos(string, startpos);
|
||||
|
||||
if (i < startpos) {
|
||||
if (range > 0) {
|
||||
startpos = i + mbclen(string[i]);
|
||||
}
|
||||
else {
|
||||
int len = mbclen(string[i]);
|
||||
if (i + len <= startpos)
|
||||
startpos = i + len;
|
||||
else
|
||||
startpos = i;
|
||||
}
|
||||
}
|
||||
return startpos;
|
||||
}
|
||||
|
||||
int
|
||||
re_adjust_startpos(bufp, string, size, startpos, range)
|
||||
struct re_pattern_buffer *bufp;
|
||||
|
@ -3121,20 +3143,7 @@ re_adjust_startpos(bufp, string, size, startpos, range)
|
|||
|
||||
/* Adjust startpos for mbc string */
|
||||
if (current_mbctype && startpos>0 && !(bufp->options&RE_OPTIMIZE_BMATCH)) {
|
||||
int i = mbc_startpos(string, startpos);
|
||||
|
||||
if (i < startpos) {
|
||||
if (range > 0) {
|
||||
startpos = i + mbclen(string[i]);
|
||||
}
|
||||
else {
|
||||
int len = mbclen(string[i]);
|
||||
if (i + len <= startpos)
|
||||
startpos = i + len;
|
||||
else
|
||||
startpos = i;
|
||||
}
|
||||
}
|
||||
startpos = re_mbc_startpos(string, size, startpos, range);
|
||||
}
|
||||
return startpos;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#define RUBY_VERSION "1.8.6"
|
||||
#define RUBY_RELEASE_DATE "2007-09-23"
|
||||
#define RUBY_RELEASE_DATE "2007-09-26"
|
||||
#define RUBY_VERSION_CODE 186
|
||||
#define RUBY_RELEASE_CODE 20070923
|
||||
#define RUBY_RELEASE_CODE 20070926
|
||||
#define RUBY_PATCHLEVEL 5000
|
||||
|
||||
#define RUBY_VERSION_MAJOR 1
|
||||
|
@ -9,7 +9,7 @@
|
|||
#define RUBY_VERSION_TEENY 6
|
||||
#define RUBY_RELEASE_YEAR 2007
|
||||
#define RUBY_RELEASE_MONTH 9
|
||||
#define RUBY_RELEASE_DAY 23
|
||||
#define RUBY_RELEASE_DAY 26
|
||||
|
||||
#ifdef RUBY_EXTERN
|
||||
RUBY_EXTERN const char ruby_version[];
|
||||
|
|
Loading…
Add table
Reference in a new issue