ruby-changes:13078
From: naruse <ko1@a...>
Date: Thu, 10 Sep 2009 16:05:52 +0900 (JST)
Subject: [ruby-changes:13078] Ruby:r24825 (trunk): Warn unknown escaped chars in regexp.
naruse 2009-09-10 16:00:44 +0900 (Thu, 10 Sep 2009) New Revision: 24825 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24825 Log: Warn unknown escaped chars in regexp. * regparse.c (UNKNOWN_ESC_WARN): added. * regparse.c (conv_backslash_value): Warn unknown escaped chars in regexp. [ruby-dev:39104] Modified files: trunk/ChangeLog trunk/regparse.c Index: regparse.c =================================================================== --- regparse.c (revision 24824) +++ regparse.c (revision 24825) @@ -2115,6 +2115,8 @@ return 0; } +static void UNKNOWN_ESC_WARN(ScanEnv *env, int c); + static int conv_backslash_value(int c, ScanEnv* env) { @@ -2133,6 +2135,8 @@ break; default: + if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) + UNKNOWN_ESC_WARN(env, c); break; } } @@ -2885,6 +2889,22 @@ } } +static void +UNKNOWN_ESC_WARN(ScanEnv *env, int c) +{ + UChar buf[WARN_BUFSIZE]; + if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ; + + onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, + env->pattern, env->pattern_end, + (UChar* )"Unknown escape \\%c is ignored", c); + + if (env->sourcefile == NULL) + (*onig_warn)((char* )buf); + else + rb_compile_warn(env->sourcefile, env->sourceline, (char* )buf); +} + static UChar* find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, UChar **next, OnigEncoding enc) Index: ChangeLog =================================================================== --- ChangeLog (revision 24824) +++ ChangeLog (revision 24825) @@ -1,3 +1,10 @@ +Thu Sep 10 15:59:05 2009 NARUSE, Yui <naruse@r...> + + * regparse.c (UNKNOWN_ESC_WARN): added. + + * regparse.c (conv_backslash_value): Warn unknown + escaped chars in regexp. [ruby-dev:39104] + Wed Sep 9 22:02:02 2009 Nobuyoshi Nakada <nobu@r...> * lib/fileutils.rb (FileUtils::Entry_#copy_file): open the source -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/