diff options
Diffstat (limited to 'ext/pdo')
| -rwxr-xr-x | ext/pdo/pdo.c | 8 | ||||
| -rwxr-xr-x | ext/pdo/pdo_dbh.c | 4 | ||||
| -rw-r--r-- | ext/pdo/pdo_sql_parser.c | 193 | ||||
| -rw-r--r-- | ext/pdo/pdo_sql_parser.c.orig | 231 | ||||
| -rw-r--r-- | ext/pdo/pdo_sql_parser.re | 15 | ||||
| -rwxr-xr-x | ext/pdo/pdo_stmt.c | 28 | ||||
| -rwxr-xr-x | ext/pdo/php_pdo_int.h | 4 |
7 files changed, 352 insertions, 131 deletions
diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index 372eaee20..e2947df0a 100755 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: pdo.c 314450 2011-08-07 23:46:00Z iliaa $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -125,7 +125,7 @@ ZEND_END_ARG_INFO() /* {{{ pdo_functions[] */ const zend_function_entry pdo_functions[] = { PHP_FE(pdo_drivers, arginfo_pdo_drivers) - {NULL, NULL, NULL} + PHP_FE_END }; /* }}} */ @@ -135,7 +135,7 @@ static const zend_module_dep pdo_deps[] = { #ifdef HAVE_SPL ZEND_MOD_REQUIRED("spl") #endif - {NULL, NULL, NULL} + ZEND_MOD_END }; #endif /* }}} */ @@ -191,7 +191,7 @@ PDO_API int php_pdo_register_driver(pdo_driver_t *driver) } return zend_hash_add(&pdo_driver_hash, (char*)driver->driver_name, driver->driver_name_len, - (void**)&driver, sizeof(driver), NULL); + (void**)&driver, sizeof(pdo_driver_t *), NULL); } PDO_API void php_pdo_unregister_driver(pdo_driver_t *driver) diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index a355491ed..5adb15833 100755 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: pdo_dbh.c 314450 2011-08-07 23:46:00Z iliaa $ */ /* The PDO Database Handle Class */ @@ -57,7 +57,7 @@ void pdo_raise_impl_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *sqlstate pdo_err = &stmt->error_code; } - strcpy(*pdo_err, sqlstate); + strncpy(*pdo_err, sqlstate, 6); /* hash sqlstate to error messages */ msg = pdo_sqlstate_state_to_description(*pdo_err); diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c index 3898ec8b1..1fa56e50b 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.13.5 on Sat Jun 4 18:42:25 2011 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: pdo_sql_parser.c 311812 2011-06-04 22:54:40Z felipe $ */ #include "php.h" #include "php_pdo_driver.h" @@ -29,7 +29,7 @@ #define PDO_PARSER_EOI 4 #define RET(i) {s->cur = cursor; return i; } -#define SKIP_ONE(i) {s->cur = s->tok + 1; return 1; } +#define SKIP_ONE(i) {s->cur = s->tok + 1; return i; } #define YYCTYPE unsigned char #define YYCURSOR cursor @@ -51,26 +51,31 @@ static int scan(Scanner *s) { YYCTYPE yych; + unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { - case 0x00: goto yy11; + case 0x00: goto yy13; case '"': goto yy2; case '\'': goto yy4; + case '-': goto yy10; + case '/': goto yy8; case ':': goto yy5; case '?': goto yy6; - default: goto yy8; + default: goto yy11; } yy2: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych >= 0x01) goto yy26; + if (yych >= 0x01) goto yy43; yy3: { SKIP_ONE(PDO_PARSER_TEXT); } yy4: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x00) goto yy3; - goto yy20; + goto yy37; yy5: yych = *++YYCURSOR; switch (yych) { @@ -136,49 +141,146 @@ yy5: case 'w': case 'x': case 'y': - case 'z': goto yy16; + case 'z': goto yy33; case ':': - case '?': goto yy13; + case '?': goto yy30; default: goto yy3; } yy6: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case ':': - case '?': goto yy13; + case '?': goto yy30; default: goto yy7; } yy7: { RET(PDO_PARSER_BIND_POS); } yy8: ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '*': goto yy20; + default: goto yy12; + } +yy9: + { RET(PDO_PARSER_TEXT); } +yy10: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy15; + default: goto yy12; + } +yy11: + ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; +yy12: switch (yych) { case 0x00: case '"': case '\'': case ':': - case '?': goto yy10; - default: goto yy8; + case '?': goto yy9; + default: goto yy11; } -yy10: - { RET(PDO_PARSER_TEXT); } -yy11: +yy13: ++YYCURSOR; { RET(PDO_PARSER_EOI); } -yy13: +yy15: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { + case 0x00: + case '"': + case '\'': case ':': - case '?': goto yy13; + case '?': goto yy18; + case '\n': + case '\r': goto yy11; default: goto yy15; } -yy15: +yy17: + { RET(PDO_PARSER_TEXT); } +yy18: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '\n': + case '\r': goto yy17; + default: goto yy18; + } +yy20: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy22; + case '*': goto yy24; + default: goto yy20; + } +yy22: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '*': goto yy27; + default: goto yy22; + } +yy24: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy22; + case '*': goto yy24; + case '/': goto yy26; + default: goto yy20; + } +yy26: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy17; + default: goto yy11; + } +yy27: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '*': goto yy27; + case '/': goto yy29; + default: goto yy22; + } +yy29: + yych = *++YYCURSOR; + goto yy17; +yy30: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case ':': + case '?': goto yy30; + default: goto yy32; + } +yy32: { RET(PDO_PARSER_TEXT); } -yy16: +yy33: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -245,52 +347,55 @@ yy16: case 'w': case 'x': case 'y': - case 'z': goto yy16; - default: goto yy18; + case 'z': goto yy33; + default: goto yy35; } -yy18: +yy35: { RET(PDO_PARSER_BIND); } -yy19: +yy36: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy20: +yy37: switch (yych) { - case 0x00: goto yy21; - case '\'': goto yy23; - case '\\': goto yy22; - default: goto yy19; + case 0x00: goto yy38; + case '\'': goto yy40; + case '\\': goto yy39; + default: goto yy36; } -yy21: +yy38: YYCURSOR = YYMARKER; - goto yy3; -yy22: + switch (yyaccept) { + case 0: goto yy3; + case 1: goto yy9; + } +yy39: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy19; -yy23: + if (yych <= 0x00) goto yy38; + goto yy36; +yy40: ++YYCURSOR; { RET(PDO_PARSER_TEXT); } -yy25: +yy42: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy26: +yy43: switch (yych) { - case 0x00: goto yy21; - case '"': goto yy28; - case '\\': goto yy27; - default: goto yy25; + case 0x00: goto yy38; + case '"': goto yy45; + case '\\': goto yy44; + default: goto yy42; } -yy27: +yy44: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy25; -yy28: + if (yych <= 0x00) goto yy38; + goto yy42; +yy45: ++YYCURSOR; { RET(PDO_PARSER_TEXT); } } diff --git a/ext/pdo/pdo_sql_parser.c.orig b/ext/pdo/pdo_sql_parser.c.orig index 7b0ec46ad..c6e8b0787 100644 --- a/ext/pdo/pdo_sql_parser.c.orig +++ b/ext/pdo/pdo_sql_parser.c.orig @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6.dev on Thu Nov 13 14:47:06 2008 */ +/* Generated by re2c 0.13.5 on Sat Jun 4 18:42:25 2011 */ #line 1 "ext/pdo/pdo_sql_parser.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.c 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: pdo_sql_parser.c 311812 2011-06-04 22:54:40Z felipe $ */ #include "php.h" #include "php_pdo_driver.h" @@ -30,7 +30,7 @@ #define PDO_PARSER_EOI 4 #define RET(i) {s->cur = cursor; return i; } -#define SKIP_ONE(i) {s->cur = s->tok + 1; return 1; } +#define SKIP_ONE(i) {s->cur = s->tok + 1; return i; } #define YYCTYPE unsigned char #define YYCURSOR cursor @@ -47,35 +47,40 @@ static int scan(Scanner *s) char *cursor = s->cur; s->tok = cursor; - #line 55 "ext/pdo/pdo_sql_parser.re" + #line 56 "ext/pdo/pdo_sql_parser.re" #line 55 "ext/pdo/pdo_sql_parser.c" { YYCTYPE yych; + unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { - case 0x00: goto yy11; + case 0x00: goto yy13; case '"': goto yy2; case '\'': goto yy4; + case '-': goto yy10; + case '/': goto yy8; case ':': goto yy5; case '?': goto yy6; - default: goto yy8; + default: goto yy11; } yy2: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych >= 0x01) goto yy26; + if (yych >= 0x01) goto yy43; yy3: -#line 63 "ext/pdo/pdo_sql_parser.re" +#line 64 "ext/pdo/pdo_sql_parser.re" { SKIP_ONE(PDO_PARSER_TEXT); } -#line 75 "ext/pdo/pdo_sql_parser.c" +#line 79 "ext/pdo/pdo_sql_parser.c" yy4: + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x00) goto yy3; - goto yy20; + goto yy37; yy5: yych = *++YYCURSOR; switch (yych) { @@ -141,57 +146,156 @@ yy5: case 'w': case 'x': case 'y': - case 'z': goto yy16; + case 'z': goto yy33; case ':': - case '?': goto yy13; + case '?': goto yy30; default: goto yy3; } yy6: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case ':': - case '?': goto yy13; + case '?': goto yy30; default: goto yy7; } yy7: -#line 62 "ext/pdo/pdo_sql_parser.re" +#line 63 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND_POS); } -#line 160 "ext/pdo/pdo_sql_parser.c" +#line 165 "ext/pdo/pdo_sql_parser.c" yy8: ++YYCURSOR; + switch ((yych = *YYCURSOR)) { + case '*': goto yy20; + default: goto yy12; + } +yy9: +#line 66 "ext/pdo/pdo_sql_parser.re" + { RET(PDO_PARSER_TEXT); } +#line 175 "ext/pdo/pdo_sql_parser.c" +yy10: + yych = *++YYCURSOR; + switch (yych) { + case '-': goto yy15; + default: goto yy12; + } +yy11: + ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; +yy12: switch (yych) { case 0x00: case '"': case '\'': case ':': - case '?': goto yy10; - default: goto yy8; + case '?': goto yy9; + default: goto yy11; } -yy10: -#line 64 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 176 "ext/pdo/pdo_sql_parser.c" -yy11: +yy13: ++YYCURSOR; -#line 65 "ext/pdo/pdo_sql_parser.re" +#line 67 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_EOI); } -#line 181 "ext/pdo/pdo_sql_parser.c" -yy13: +#line 199 "ext/pdo/pdo_sql_parser.c" +yy15: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { + case 0x00: + case '"': + case '\'': case ':': - case '?': goto yy13; + case '?': goto yy18; + case '\n': + case '\r': goto yy11; default: goto yy15; } -yy15: -#line 60 "ext/pdo/pdo_sql_parser.re" +yy17: +#line 65 "ext/pdo/pdo_sql_parser.re" + { RET(PDO_PARSER_TEXT); } +#line 217 "ext/pdo/pdo_sql_parser.c" +yy18: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '\n': + case '\r': goto yy17; + default: goto yy18; + } +yy20: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy22; + case '*': goto yy24; + default: goto yy20; + } +yy22: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '*': goto yy27; + default: goto yy22; + } +yy24: + yyaccept = 1; + YYMARKER = ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy22; + case '*': goto yy24; + case '/': goto yy26; + default: goto yy20; + } +yy26: + yych = *++YYCURSOR; + switch (yych) { + case 0x00: + case '"': + case '\'': + case ':': + case '?': goto yy17; + default: goto yy11; + } +yy27: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case '*': goto yy27; + case '/': goto yy29; + default: goto yy22; + } +yy29: + yych = *++YYCURSOR; + goto yy17; +yy30: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch (yych) { + case ':': + case '?': goto yy30; + default: goto yy32; + } +yy32: +#line 61 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 194 "ext/pdo/pdo_sql_parser.c" -yy16: +#line 298 "ext/pdo/pdo_sql_parser.c" +yy33: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -258,62 +362,65 @@ yy16: case 'w': case 'x': case 'y': - case 'z': goto yy16; - default: goto yy18; + case 'z': goto yy33; + default: goto yy35; } -yy18: -#line 61 "ext/pdo/pdo_sql_parser.re" +yy35: +#line 62 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND); } -#line 268 "ext/pdo/pdo_sql_parser.c" -yy19: +#line 372 "ext/pdo/pdo_sql_parser.c" +yy36: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy20: +yy37: switch (yych) { - case 0x00: goto yy21; - case '\'': goto yy23; - case '\\': goto yy22; - default: goto yy19; + case 0x00: goto yy38; + case '\'': goto yy40; + case '\\': goto yy39; + default: goto yy36; } -yy21: +yy38: YYCURSOR = YYMARKER; - goto yy3; -yy22: + switch (yyaccept) { + case 0: goto yy3; + case 1: goto yy9; + } +yy39: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy19; -yy23: + if (yych <= 0x00) goto yy38; + goto yy36; +yy40: ++YYCURSOR; -#line 59 "ext/pdo/pdo_sql_parser.re" +#line 60 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 293 "ext/pdo/pdo_sql_parser.c" -yy25: +#line 400 "ext/pdo/pdo_sql_parser.c" +yy42: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy26: +yy43: switch (yych) { - case 0x00: goto yy21; - case '"': goto yy28; - case '\\': goto yy27; - default: goto yy25; + case 0x00: goto yy38; + case '"': goto yy45; + case '\\': goto yy44; + default: goto yy42; } -yy27: +yy44: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= 0x00) goto yy21; - goto yy25; -yy28: + if (yych <= 0x00) goto yy38; + goto yy42; +yy45: ++YYCURSOR; -#line 58 "ext/pdo/pdo_sql_parser.re" +#line 59 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 315 "ext/pdo/pdo_sql_parser.c" +#line 422 "ext/pdo/pdo_sql_parser.c" } -#line 66 "ext/pdo/pdo_sql_parser.re" +#line 68 "ext/pdo/pdo_sql_parser.re" } diff --git a/ext/pdo/pdo_sql_parser.re b/ext/pdo/pdo_sql_parser.re index c56934de2..55ae5e38d 100644 --- a/ext/pdo/pdo_sql_parser.re +++ b/ext/pdo/pdo_sql_parser.re @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_sql_parser.re 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: pdo_sql_parser.re 314451 2011-08-08 00:07:54Z iliaa $ */ #include "php.h" #include "php_pdo_driver.h" @@ -28,7 +28,7 @@ #define PDO_PARSER_EOI 4 #define RET(i) {s->cur = cursor; return i; } -#define SKIP_ONE(i) {s->cur = s->tok + 1; return 1; } +#define SKIP_ONE(i) {s->cur = s->tok + 1; return i; } #define YYCTYPE unsigned char #define YYCURSOR cursor @@ -48,6 +48,7 @@ static int scan(Scanner *s) /*!re2c BINDCHR = [:][a-zA-Z0-9_]+; QUESTION = [?]; + COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--"[^\r\n]*); SPECIALS = [:?"']; MULTICHAR = [:?]; EOF = [\000]; @@ -61,6 +62,7 @@ static int scan(Scanner *s) BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } SPECIALS { SKIP_ONE(PDO_PARSER_TEXT); } + COMMENTS { RET(PDO_PARSER_TEXT); } (ANYNOEOF\SPECIALS)+ { RET(PDO_PARSER_TEXT); } EOF { RET(PDO_PARSER_EOI); } */ @@ -211,7 +213,7 @@ safe: param->param_type TSRMLS_CC)) { /* bork */ ret = -1; - strcpy(stmt->error_code, stmt->dbh->error_code); + strncpy(stmt->error_code, stmt->dbh->error_code, 6); if (buf) { efree(buf); } @@ -234,6 +236,9 @@ safe: plc->freeq = 0; break; + case IS_BOOL: + convert_to_long(param->parameter); + case IS_LONG: case IS_DOUBLE: convert_to_string(param->parameter); @@ -242,8 +247,6 @@ safe: plc->freeq = 0; break; - case IS_BOOL: - convert_to_long(param->parameter); default: convert_to_string(param->parameter); if (!stmt->dbh->methods->quoter(stmt->dbh, Z_STRVAL_P(param->parameter), @@ -251,7 +254,7 @@ safe: param->param_type TSRMLS_CC)) { /* bork */ ret = -1; - strcpy(stmt->error_code, stmt->dbh->error_code); + strncpy(stmt->error_code, stmt->dbh->error_code, 6); goto clean_up; } plc->freeq = 1; diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index cb1a01562..04cdad030 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c 308569 2011-02-22 15:48:25Z iliaa $ */ +/* $Id: pdo_stmt.c 312258 2011-06-18 15:56:14Z felipe $ */ /* The PDO Statement Handle Class */ @@ -38,6 +38,9 @@ #include "php_memory_streams.h" /* {{{ arginfo */ +ZEND_BEGIN_ARG_INFO(arginfo_pdostatement__void, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_INFO_EX(arginfo_pdostatement_execute, 0, 0, 0) ZEND_ARG_INFO(0, bound_input_params) /* array */ ZEND_END_ARG_INFO() @@ -349,7 +352,10 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s /* if you prepare and then execute passing an array of params keyed by names, * then this will trigger, and we don't want that */ if (param->paramno == -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Did not found column name '%s' in the defined columns; it will not be bound", param->name); + char *tmp; + spprintf(&tmp, 0, "Did not find column name '%s' in the defined columns; it will not be bound", param->name); + pdo_raise_impl_error(stmt->dbh, stmt, "HY000", tmp TSRMLS_CC); + efree(tmp); } } @@ -2218,22 +2224,22 @@ const zend_function_entry pdo_dbstmt_functions[] = { PHP_ME(PDOStatement, bindParam, arginfo_pdostatement_bindparam, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, bindColumn, arginfo_pdostatement_bindcolumn, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, bindValue, arginfo_pdostatement_bindvalue, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, rowCount, NULL, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, rowCount, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, fetchColumn, arginfo_pdostatement_fetchcolumn, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, fetchAll, arginfo_pdostatement_fetchall, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, fetchObject, arginfo_pdostatement_fetchobject, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, errorCode, NULL, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, errorInfo, NULL, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, errorCode, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, errorInfo, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, setAttribute, arginfo_pdostatement_setattribute, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, getAttribute, arginfo_pdostatement_getattribute, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, columnCount, NULL, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, columnCount, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, getColumnMeta, arginfo_pdostatement_getcolumnmeta, ZEND_ACC_PUBLIC) PHP_ME(PDOStatement, setFetchMode, arginfo_pdostatement_setfetchmode, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, nextRowset, NULL, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, closeCursor, NULL, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, debugDumpParams, NULL, ZEND_ACC_PUBLIC) - PHP_ME(PDOStatement, __wakeup, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) - PHP_ME(PDOStatement, __sleep, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) + PHP_ME(PDOStatement, nextRowset, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, closeCursor, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, debugDumpParams, arginfo_pdostatement__void, ZEND_ACC_PUBLIC) + PHP_ME(PDOStatement, __wakeup, arginfo_pdostatement__void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) + PHP_ME(PDOStatement, __sleep, arginfo_pdostatement__void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) {NULL, NULL, NULL} }; diff --git a/ext/pdo/php_pdo_int.h b/ext/pdo/php_pdo_int.h index 20ca89f6a..03c717958 100755 --- a/ext/pdo/php_pdo_int.h +++ b/ext/pdo/php_pdo_int.h @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_int.h 306939 2011-01-01 02:19:59Z felipe $ */ +/* $Id: php_pdo_int.h 314450 2011-08-07 23:46:00Z iliaa $ */ /* Stuff private to the PDO extension and not for consumption by PDO drivers * */ @@ -58,7 +58,7 @@ extern pdo_driver_t *pdo_find_driver(const char *name, int namelen); extern void pdo_handle_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt TSRMLS_DC); #define PDO_DBH_CLEAR_ERR() do { \ - strcpy(dbh->error_code, PDO_ERR_NONE); \ + strncpy(dbh->error_code, PDO_ERR_NONE, sizeof(PDO_ERR_NONE)); \ if (dbh->query_stmt) { \ dbh->query_stmt = NULL; \ zend_objects_store_del_ref(&dbh->query_stmt_zval TSRMLS_CC); \ |
