iliaa           Tue Dec  5 18:05:00 2006 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/pdo/tests      bug_36798.phpt 

  Modified files:              
    /php-src/ext/pdo    pdo_sql_parser.re pdo_sql_parser.c 
    /php-src    NEWS 
  Log:
  Fixed bug #36798 (Error parsing named parameters with queries containing  
  high-ascii chars).
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.4&r2=1.28.2.4.2.5&diff_format=u
Index: php-src/ext/pdo/pdo_sql_parser.re
diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.4 
php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.5
--- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.4      Mon Dec  4 00:38:46 2006
+++ php-src/ext/pdo/pdo_sql_parser.re   Tue Dec  5 18:04:59 2006
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.4 2006/12/04 00:38:46 iliaa Exp $ */
+/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.5 2006/12/05 18:04:59 iliaa Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -48,15 +48,13 @@
        BINDCHR         = [:][a-zA-Z0-9_]+;
        QUESTION        = [?];
        SPECIALS        = [:?"'];
-       ESCQQ           = [\\]["];
-       ESCQ            = [\\]['];
-       EOF                     = [\000];
+       EOF             = [\000];
        ANYNOEOF        = [\001-\377];
        */
 
        /*!re2c
-               (["] (ESCQQ|[\\]ANYNOEOF|ANYNOEOF\[\\"])* ["])          { 
RET(PDO_PARSER_TEXT); }
-               (['] (ESCQ|[\\]ANYNOEOF|ANYNOEOF\[\\'])* ['])           { 
RET(PDO_PARSER_TEXT); }
+               (["] ([^"])* ["])               { RET(PDO_PARSER_TEXT); }
+               (['] ([^'])* ['])               { RET(PDO_PARSER_TEXT); }
                SPECIALS{2,}                                                    
{ RET(PDO_PARSER_TEXT); }
                BINDCHR                                                         
        { RET(PDO_PARSER_BIND); }
                QUESTION                                                        
        { RET(PDO_PARSER_BIND_POS); }
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.5&r2=1.35.2.6.2.6&diff_format=u
Index: php-src/ext/pdo/pdo_sql_parser.c
diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.5 
php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.6
--- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.5       Mon Dec  4 00:38:46 2006
+++ php-src/ext/pdo/pdo_sql_parser.c    Tue Dec  5 18:04:59 2006
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.10.6 on Sun Dec  3 19:05:06 2006 */
+/* Generated by re2c 0.10.6 on Mon Dec  4 16:21:45 2006 */
 #line 1 "ext/pdo/pdo_sql_parser.re"
 /*
   +----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.5 2006/12/04 00:38:46 iliaa Exp $ */
+/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.6 2006/12/05 18:04:59 iliaa Exp $ */
 
 #include "php.h"
 #include "php_pdo_driver.h"
@@ -46,12 +46,12 @@
        char *cursor = s->cur;
 
        s->tok = cursor;
-       #line 55 "ext/pdo/pdo_sql_parser.re"
+       #line 53 "ext/pdo/pdo_sql_parser.re"
 
 
        {
        static unsigned char yybm[] = {
-                 0, 162, 162, 162, 162, 162, 162, 162, 
+               160, 162, 162, 162, 162, 162, 162, 162, 
                162, 162, 162, 162, 162, 162, 162, 162, 
                162, 162, 162, 162, 162, 162, 162, 162, 
                162, 162, 162, 162, 162, 162, 162, 162, 
@@ -62,7 +62,7 @@
                162, 170, 170, 170, 170, 170, 170, 170, 
                170, 170, 170, 170, 170, 170, 170, 170, 
                170, 170, 170, 170, 170, 170, 170, 170, 
-               170, 170, 170, 162,   2, 162, 162, 170, 
+               170, 170, 170, 162, 162, 162, 162, 170, 
                162, 170, 170, 170, 170, 170, 170, 170, 
                170, 170, 170, 170, 170, 170, 170, 170, 
                170, 170, 170, 170, 170, 170, 170, 170, 
@@ -88,7 +88,6 @@
 #line 89 "ext/pdo/pdo_sql_parser.c"
        {
                YYCTYPE yych;
-               unsigned int yyaccept = 0;
 
                if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
                yych = *YYCURSOR;
@@ -101,27 +100,23 @@
                if(yych <= '>') goto yy5;
                goto yy6;
 yy2:
-               yyaccept = 0;
-               yych = *(YYMARKER = ++YYCURSOR);
+               yych = *++YYCURSOR;
                if(yybm[0+yych] & 64) {
-                       goto yy30;
+                       goto yy28;
                }
-               if(yych <= 0x00) goto yy3;
-               if(yych == '"') goto yy28;
-               goto yy33;
+               if(yych == '"') goto yy26;
+               goto yy30;
 yy3:
-#line 63 "ext/pdo/pdo_sql_parser.re"
+#line 61 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_TEXT); }
-#line 116 "ext/pdo/pdo_sql_parser.c"
+#line 113 "ext/pdo/pdo_sql_parser.c"
 yy4:
-               yyaccept = 0;
-               yych = *(YYMARKER = ++YYCURSOR);
+               yych = *++YYCURSOR;
                if(yybm[0+yych] & 16) {
                        goto yy19;
                }
-               if(yych <= 0x00) goto yy3;
                if(yych == '\'') goto yy21;
-               goto yy24;
+               goto yy23;
 yy5:
                yych = *++YYCURSOR;
                if(yybm[0+yych] & 4) {
@@ -147,9 +142,9 @@
                if(yybm[0+(yych = *YYCURSOR)] & 4) {
                        goto yy13;
                }
-#line 62 "ext/pdo/pdo_sql_parser.re"
+#line 60 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_BIND_POS); }
-#line 153 "ext/pdo/pdo_sql_parser.c"
+#line 148 "ext/pdo/pdo_sql_parser.c"
 yy8:
                ++YYCURSOR;
                if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -157,14 +152,14 @@
                if(yybm[0+yych] & 2) {
                        goto yy8;
                }
-#line 64 "ext/pdo/pdo_sql_parser.re"
+#line 62 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_TEXT); }
-#line 163 "ext/pdo/pdo_sql_parser.c"
+#line 158 "ext/pdo/pdo_sql_parser.c"
 yy11:
                ++YYCURSOR;
-#line 65 "ext/pdo/pdo_sql_parser.re"
+#line 63 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_EOI); }
-#line 168 "ext/pdo/pdo_sql_parser.c"
+#line 163 "ext/pdo/pdo_sql_parser.c"
 yy13:
                ++YYCURSOR;
                if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -172,10 +167,9 @@
                if(yybm[0+yych] & 4) {
                        goto yy13;
                }
-yy15:
-#line 60 "ext/pdo/pdo_sql_parser.re"
+#line 58 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_TEXT); }
-#line 179 "ext/pdo/pdo_sql_parser.c"
+#line 173 "ext/pdo/pdo_sql_parser.c"
 yy16:
                ++YYCURSOR;
                if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -183,106 +177,63 @@
                if(yybm[0+yych] & 8) {
                        goto yy16;
                }
-#line 61 "ext/pdo/pdo_sql_parser.re"
+#line 59 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_BIND); }
-#line 189 "ext/pdo/pdo_sql_parser.c"
+#line 183 "ext/pdo/pdo_sql_parser.c"
 yy19:
-               yyaccept = 1;
-               YYMARKER = ++YYCURSOR;
                if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
                yych = *YYCURSOR;
                if(yybm[0+yych] & 16) {
                        goto yy19;
                }
-               if(yych <= '\'') {
-                       if(yych <= 0x00) goto yy15;
-                       if(yych <= '&') goto yy23;
-               } else {
-                       if(yych == '\\') goto yy26;
-                       goto yy23;
-               }
+               if(yych != '\'') goto yy23;
 yy21:
                ++YYCURSOR;
                if(yybm[0+(yych = *YYCURSOR)] & 4) {
                        goto yy13;
                }
 yy22:
-#line 59 "ext/pdo/pdo_sql_parser.re"
+#line 57 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_TEXT); }
-#line 213 "ext/pdo/pdo_sql_parser.c"
+#line 199 "ext/pdo/pdo_sql_parser.c"
 yy23:
                ++YYCURSOR;
                if(YYLIMIT == YYCURSOR) YYFILL(1);
                yych = *YYCURSOR;
-yy24:
                if(yybm[0+yych] & 32) {
                        goto yy23;
                }
-               if(yych <= 0x00) goto yy25;
-               if(yych <= '[') goto yy27;
-               goto yy26;
-yy25:
-               YYCURSOR = YYMARKER;
-               if(yyaccept <= 0) {
-                       goto yy3;
-               } else {
-                       goto yy15;
-               }
-yy26:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yych <= 0x00) goto yy25;
-               goto yy23;
-yy27:
                yych = *++YYCURSOR;
                goto yy22;
-yy28:
+yy26:
                ++YYCURSOR;
                if(yybm[0+(yych = *YYCURSOR)] & 4) {
                        goto yy13;
                }
-yy29:
-#line 58 "ext/pdo/pdo_sql_parser.re"
+yy27:
+#line 56 "ext/pdo/pdo_sql_parser.re"
                { RET(PDO_PARSER_TEXT); }
-#line 249 "ext/pdo/pdo_sql_parser.c"
-yy30:
-               yyaccept = 1;
-               YYMARKER = ++YYCURSOR;
+#line 217 "ext/pdo/pdo_sql_parser.c"
+yy28:
                if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
                yych = *YYCURSOR;
                if(yybm[0+yych] & 64) {
-                       goto yy30;
+                       goto yy28;
                }
-               if(yych <= '"') {
-                       if(yych <= 0x00) goto yy15;
-                       if(yych >= '"') goto yy28;
-               } else {
-                       if(yych == '\\') goto yy34;
-               }
-yy32:
+               if(yych == '"') goto yy26;
+yy30:
                ++YYCURSOR;
                if(YYLIMIT == YYCURSOR) YYFILL(1);
                yych = *YYCURSOR;
-yy33:
                if(yybm[0+yych] & 128) {
-                       goto yy32;
+                       goto yy30;
                }
-               if(yych <= 0x00) goto yy25;
-               if(yych <= '[') goto yy35;
-yy34:
                ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
                yych = *YYCURSOR;
-               if(yych <= 0x00) goto yy25;
-               goto yy32;
-yy35:
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy29;
+               goto yy27;
        }
 }
-#line 66 "ext/pdo/pdo_sql_parser.re"
+#line 64 "ext/pdo/pdo_sql_parser.re"
        
 }
 
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.403&r2=1.2027.2.547.2.404&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.403 php-src/NEWS:1.2027.2.547.2.404
--- php-src/NEWS:1.2027.2.547.2.403     Tue Dec  5 12:05:43 2006
+++ php-src/NEWS        Tue Dec  5 18:04:59 2006
@@ -147,6 +147,8 @@
   (Ilia)
 - Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes)
 - Fixed bug #36812 (pg_execute() modifies input array). (Ilia)
+- Fixed bug #36798 (Error parsing named parameters with queries containing
+  high-ascii chars). (Ilia)
 - Fixed bug #36644 (possible crash in variant_date_from_timestamp()). (Ilia)
 - Fixed bug #33282 (Re-assignment by reference does not clear the is_ref flag)
   (Ilia,Dmitry, Matt Wilmas)

http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_36798.phpt?view=markup&rev=1.1
Index: php-src/ext/pdo/tests/bug_36798.phpt
+++ php-src/ext/pdo/tests/bug_36798.phpt

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to