ruby-changes:5335
From: shyouhei <ko1@a...>
Date: Thu, 5 Jun 2008 16:20:55 +0900 (JST)
Subject: [ruby-changes:5335] Ruby:r16836 (ruby_1_8_5): merge revision(s) 13602:
shyouhei 2008-06-05 16:20:04 +0900 (Thu, 05 Jun 2008) New Revision: 16836 Modified files: branches/ruby_1_8_5/ChangeLog branches/ruby_1_8_5/version.h branches/ruby_1_8_5/win32/win32.c Log: merge revision(s) 13602: * win32/win32.c (make_cmdvector): adjust escaped successive double-quote handling. (merge from trunk) http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/win32/win32.c?r1=16836&r2=16835&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/version.h?r1=16836&r2=16835&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/ChangeLog?r1=16836&r2=16835&diff_format=u Index: ruby_1_8_5/ChangeLog =================================================================== --- ruby_1_8_5/ChangeLog (revision 16835) +++ ruby_1_8_5/ChangeLog (revision 16836) @@ -1,3 +1,8 @@ +Thu Jun 5 16:19:27 2008 NAKAMURA Usaku <usa@r...> + + * win32/win32.c (make_cmdvector): adjust escaped successive + double-quote handling. (merge from trunk) + Thu Jun 5 12:24:25 2008 NAKAMURA Usaku <usa@r...> * win32/win32.c (init_env): initialize HOME and USER environment Index: ruby_1_8_5/version.h =================================================================== --- ruby_1_8_5/version.h (revision 16835) +++ ruby_1_8_5/version.h (revision 16836) @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2008-06-05" #define RUBY_VERSION_CODE 185 #define RUBY_RELEASE_CODE 20080605 -#define RUBY_PATCHLEVEL 128 +#define RUBY_PATCHLEVEL 129 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 Index: ruby_1_8_5/win32/win32.c =================================================================== --- ruby_1_8_5/win32/win32.c (revision 16835) +++ ruby_1_8_5/win32/win32.c (revision 16836) @@ -1313,10 +1313,13 @@ if (!(slashes & 1)) { if (!quote) quote = *ptr; - else if (quote == *ptr) + else if (quote == *ptr) { + if (quote == '"' && quote == ptr[1]) + ptr++; quote = '\0'; - escape++; + } } + escape++; slashes = 0; break; @@ -1343,10 +1346,10 @@ // if (escape) { - char *p = base; + char *p = base, c; slashes = quote = 0; while (p < base + len) { - switch (*p) { + switch (c = *p) { case '\\': p++; if (quote != '\'') slashes++; @@ -1354,33 +1357,27 @@ case '\'': case '"': + if (!(slashes & 1) && quote && quote != c) { + p++; + slashes = 0; + break; + } + memcpy(p - ((slashes + 1) >> 1), p + (~slashes & 1), + base + len - p); + len -= ((slashes + 1) >> 1) + (~slashes & 1); + p -= (slashes + 1) >> 1; if (!(slashes & 1)) { - if (!quote) - quote = *p; - else if (quote == *p) + if (quote) { + if (quote == '"' && quote == *p) + p++; quote = '\0'; - else { - p++; - slashes = 0; - break; } + else + quote = c; } - if (base + slashes == p) { - base += slashes >> 1; - len -= slashes >> 1; - slashes &= 1; - } - if (base == p) { - base = ++p; - --len; - } - else { - memcpy(p - ((slashes + 1) >> 1), p + (~slashes & 1), base + len - p); - slashes >>= 1; - p -= slashes; - len -= slashes + 1; - slashes = 0; - } + else + p++; + slashes = 0; break; default: -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/