diff options
Diffstat (limited to 'ext/pdo/pdo_sql_parser.c')
-rw-r--r-- | ext/pdo/pdo_sql_parser.c | 94 |
1 files changed, 38 insertions, 56 deletions
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c index c34b8adf3d..2b97de9c53 100644 --- a/ext/pdo/pdo_sql_parser.c +++ b/ext/pdo/pdo_sql_parser.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6.dev on Thu Nov 13 14:47:06 2008 */ +/* Generated by re2c 0.11.0 on Mon Nov 26 15:18:37 2007 */ #line 1 "ext/pdo/pdo_sql_parser.re" /* +----------------------------------------------------------------------+ @@ -55,9 +55,9 @@ static int scan(Scanner *s) { YYCTYPE yych; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - switch (yych) { + switch(yych) { case 0x00: goto yy11; case '"': goto yy2; case '\'': goto yy4; @@ -66,19 +66,18 @@ static int scan(Scanner *s) default: goto yy8; } yy2: - yych = *(YYMARKER = ++YYCURSOR); - if (yych >= 0x01) goto yy26; + yych = *++YYCURSOR; + goto yy24; yy3: #line 63 "ext/pdo/pdo_sql_parser.re" { SKIP_ONE(PDO_PARSER_TEXT); } #line 75 "ext/pdo/pdo_sql_parser.c" yy4: - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy3; + yych = *++YYCURSOR; goto yy20; yy5: yych = *++YYCURSOR; - switch (yych) { + switch(yych) { case '0': case '1': case '2': @@ -148,7 +147,7 @@ yy5: } yy6: ++YYCURSOR; - switch ((yych = *YYCURSOR)) { + switch((yych = *YYCURSOR)) { case ':': case '?': goto yy13; default: goto yy7; @@ -156,12 +155,12 @@ yy6: yy7: #line 62 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND_POS); } -#line 160 "ext/pdo/pdo_sql_parser.c" +#line 159 "ext/pdo/pdo_sql_parser.c" yy8: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch (yych) { + switch(yych) { case 0x00: case '"': case '\'': @@ -172,17 +171,17 @@ yy8: yy10: #line 64 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 176 "ext/pdo/pdo_sql_parser.c" +#line 175 "ext/pdo/pdo_sql_parser.c" yy11: ++YYCURSOR; #line 65 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_EOI); } -#line 181 "ext/pdo/pdo_sql_parser.c" +#line 180 "ext/pdo/pdo_sql_parser.c" yy13: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch (yych) { + switch(yych) { case ':': case '?': goto yy13; default: goto yy15; @@ -190,12 +189,12 @@ yy13: yy15: #line 60 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 194 "ext/pdo/pdo_sql_parser.c" +#line 193 "ext/pdo/pdo_sql_parser.c" yy16: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch (yych) { + switch(yych) { case '0': case '1': case '2': @@ -264,54 +263,35 @@ yy16: yy18: #line 61 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND); } -#line 268 "ext/pdo/pdo_sql_parser.c" +#line 267 "ext/pdo/pdo_sql_parser.c" yy19: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy20: - switch (yych) { - case 0x00: goto yy21; - case '\'': goto yy23; - case '\\': goto yy22; + switch(yych) { + case '\'': goto yy21; default: goto yy19; } yy21: - YYCURSOR = YYMARKER; - goto yy3; -yy22: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy19; -yy23: ++YYCURSOR; #line 59 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 293 "ext/pdo/pdo_sql_parser.c" -yy25: +#line 281 "ext/pdo/pdo_sql_parser.c" +yy23: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy26: - switch (yych) { - case 0x00: goto yy21; - case '"': goto yy28; - case '\\': goto yy27; - default: goto yy25; +yy24: + switch(yych) { + case '"': goto yy25; + default: goto yy23; } -yy27: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy25; -yy28: +yy25: ++YYCURSOR; #line 58 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 315 "ext/pdo/pdo_sql_parser.c" +#line 295 "ext/pdo/pdo_sql_parser.c" } #line 66 "ext/pdo/pdo_sql_parser.re" @@ -550,9 +530,9 @@ rewrite: } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { /* rewrite ? to :pdoX */ - char *name, *idxbuf; + char idxbuf[32]; const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - int bind_no = 1; + char *name; newbuffer_len = inquery_len; @@ -568,19 +548,21 @@ rewrite: /* check if bound parameter is already available */ if (!strcmp(name, "?") || zend_hash_find(stmt->bound_param_map, name, plc->len + 1, (void**) &p) == FAILURE) { - spprintf(&idxbuf, 0, tmpl, bind_no++); + snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1); } else { - idxbuf = estrdup(p); + memset(idxbuf, 0, sizeof(idxbuf)); + memcpy(idxbuf, p, sizeof(idxbuf)); skip_map = 1; } - plc->quoted = idxbuf; + plc->quoted = estrdup(idxbuf); plc->qlen = strlen(plc->quoted); plc->freeq = 1; newbuffer_len += plc->qlen; if (!skip_map && stmt->named_rewrite_template) { /* create a mapping */ + zend_hash_update(stmt->bound_param_map, name, plc->len + 1, idxbuf, plc->qlen + 1, NULL); } |