summaryrefslogtreecommitdiff
path: root/ext/pdo
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2011-08-19 10:22:38 +0200
committerOndřej Surý <ondrej@sury.org>2011-08-19 10:22:38 +0200
commitf452a2b3e4e4279b27594a8ddb66525442d59227 (patch)
treed05cb62c5515ada33076d3cc3e49b664733a478c /ext/pdo
parent038ba12e8724d537040e88ec794354b0c063f0a6 (diff)
downloadphp-upstream/5.3.7.tar.gz
Imported Upstream version 5.3.7upstream/5.3.7
Diffstat (limited to 'ext/pdo')
-rwxr-xr-xext/pdo/pdo.c8
-rwxr-xr-xext/pdo/pdo_dbh.c4
-rw-r--r--ext/pdo/pdo_sql_parser.c193
-rw-r--r--ext/pdo/pdo_sql_parser.c.orig231
-rw-r--r--ext/pdo/pdo_sql_parser.re15
-rwxr-xr-xext/pdo/pdo_stmt.c28
-rwxr-xr-xext/pdo/php_pdo_int.h4
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); \