ruby-changes:2023
From: ko1@a...
Date: 26 Sep 2007 05:12:39 +0900
Subject: [ruby-changes:2023] nobu - Ruby:r13514 (trunk): * parse.y (parser_yyerror): limit error message length.
nobu 2007-09-26 05:12:24 +0900 (Wed, 26 Sep 2007) New Revision: 13514 Modified files: trunk/ChangeLog trunk/parse.y trunk/version.h Log: * parse.y (parser_yyerror): limit error message length. [ruby-dev:31848] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=13514&r2=13513 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=13514&r2=13513 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13514&r2=13513 Index: ChangeLog =================================================================== --- ChangeLog (revision 13513) +++ ChangeLog (revision 13514) @@ -1,3 +1,8 @@ +Wed Sep 26 05:12:17 2007 Nobuyoshi Nakada <nobu@r...> + + * parse.y (parser_yyerror): limit error message length. + [ruby-dev:31848] + Tue Sep 25 15:11:32 2007 Yukihiro Matsumoto <matz@r...> * io.c (io_ungetc): reallocate internal buffer if pushing data Index: parse.y =================================================================== --- parse.y (revision 13513) +++ parse.y (revision 13514) @@ -4572,6 +4572,7 @@ parser_yyerror(struct parser_params *parser, const char *msg) { #ifndef RIPPER + const int max_line_margin = 30; const char *p, *pe; char *buf; int len, i; @@ -4593,10 +4594,23 @@ len = pe - p; if (len > 4) { char *p2; + const char *pre = "", *post = ""; + + if (len > max_line_margin * 2 + 10) { + if (lex_p - p > max_line_margin) { + p = rb_enc_prev_char(p, lex_p - max_line_margin, rb_enc_get(lex_lastline)); + pre = "..."; + } + if (pe - lex_p > max_line_margin) { + pe = rb_enc_prev_char(lex_p, lex_p + max_line_margin, rb_enc_get(lex_lastline)); + 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; p2 = buf; pe = buf + len; @@ -4607,7 +4621,7 @@ } buf[i] = '^'; buf[i+1] = '\0'; - rb_compile_error_append("%s", buf); + rb_compile_error_append("%s%s", pre, buf); } #else dispatch1(parse_error, STR_NEW2(msg)); Index: version.h =================================================================== --- version.h (revision 13513) +++ version.h (revision 13514) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-09-25" +#define RUBY_RELEASE_DATE "2007-09-26" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070925 +#define RUBY_RELEASE_CODE 20070926 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 9 -#define RUBY_RELEASE_DAY 25 +#define RUBY_RELEASE_DAY 26 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml