diff options
author | Sean Finney <seanius@debian.org> | 2009-04-10 14:09:48 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2009-04-10 14:09:48 +0200 |
commit | cd0b49c72aee33b3e44a9c589fcd93b9e1c7a64f (patch) | |
tree | 1315c623bb7d9dfa8d366fa9cd2c6834ceeb5da5 /ext/pdo/pdo_sql_parser.c | |
parent | 9ea47aab740772adf0c69d8c94b208a464e599ea (diff) | |
download | php-cd0b49c72aee33b3e44a9c589fcd93b9e1c7a64f.tar.gz |
Imported Upstream version 5.2.9.dfsg.1upstream/5.2.9.dfsg.1
Diffstat (limited to 'ext/pdo/pdo_sql_parser.c')
-rw-r--r-- | ext/pdo/pdo_sql_parser.c | 84 |
1 files changed, 51 insertions, 33 deletions
diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c index 1913f0dc7..3d9effdf3 100644 --- a/ext/pdo/pdo_sql_parser.c +++ b/ext/pdo/pdo_sql_parser.c @@ -1,9 +1,9 @@ -/* Generated by re2c 0.11.0 on Mon Nov 26 16:10:28 2007 */ +/* Generated by re2c 0.13.6.dev on Thu Nov 13 21:23:12 2008 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2008 The PHP Group | + | Copyright (c) 1997-2009 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.15 2007/12/31 07:20:09 sebastian Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.21 2008/12/31 11:17:41 sebastian Exp $ */ #include "php.h" #include "php_pdo_driver.h" @@ -52,9 +52,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; @@ -63,16 +63,17 @@ static int scan(Scanner *s) default: goto yy8; } yy2: - yych = *++YYCURSOR; - goto yy24; + yych = *(YYMARKER = ++YYCURSOR); + if (yych >= 0x01) goto yy26; yy3: { SKIP_ONE(PDO_PARSER_TEXT); } yy4: - yych = *++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy3; goto yy20; yy5: yych = *++YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -142,7 +143,7 @@ yy5: } yy6: ++YYCURSOR; - switch((yych = *YYCURSOR)) { + switch ((yych = *YYCURSOR)) { case ':': case '?': goto yy13; default: goto yy7; @@ -151,9 +152,9 @@ yy7: { RET(PDO_PARSER_BIND_POS); } yy8: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case 0x00: case '"': case '\'': @@ -168,9 +169,9 @@ yy11: { RET(PDO_PARSER_EOI); } 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; @@ -179,9 +180,9 @@ yy15: { RET(PDO_PARSER_TEXT); } yy16: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - switch(yych) { + switch (yych) { case '0': case '1': case '2': @@ -251,26 +252,45 @@ yy18: { RET(PDO_PARSER_BIND); } yy19: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy20: - switch(yych) { - case '\'': goto yy21; + switch (yych) { + case 0x00: goto yy21; + case '\'': goto yy23; + case '\\': goto yy22; default: goto yy19; } yy21: + YYCURSOR = YYMARKER; + goto yy3; +yy22: ++YYCURSOR; - { RET(PDO_PARSER_TEXT); } + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy19; yy23: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); + { RET(PDO_PARSER_TEXT); } +yy25: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy24: - switch(yych) { - case '"': goto yy25; - default: goto yy23; +yy26: + switch (yych) { + case 0x00: goto yy21; + case '"': goto yy28; + case '\\': goto yy27; + default: goto yy25; } -yy25: +yy27: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= 0x00) goto yy21; + goto yy25; +yy28: ++YYCURSOR; { RET(PDO_PARSER_TEXT); } } @@ -510,9 +530,9 @@ rewrite: } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { /* rewrite ? to :pdoX */ - char idxbuf[32]; + char *name, *idxbuf; const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - char *name; + int bind_no = 1; newbuffer_len = inquery_len; @@ -528,21 +548,19 @@ 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) { - snprintf(idxbuf, sizeof(idxbuf), tmpl, plc->bindno + 1); + spprintf(&idxbuf, 0, tmpl, bind_no++); } else { - memset(idxbuf, 0, sizeof(idxbuf)); - memcpy(idxbuf, p, sizeof(idxbuf)); + idxbuf = estrdup(p); skip_map = 1; } - plc->quoted = estrdup(idxbuf); + plc->quoted = 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); } |