From: Felipe Pena Date: Fri, 11 Dec 2009 22:30:46 +0000 (+0000) Subject: - Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes seg... X-Git-Tag: php-5.3.2RC1~58 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5eae703705e945415952f2135f108dc24d86a328;p=php - Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes seg fault). (Original patch by davbrown4 at yahoo dot com) --- diff --git a/NEWS b/NEWS index 4be86efe9f..6a33f63bb2 100644 --- a/NEWS +++ b/NEWS @@ -33,6 +33,8 @@ PHP NEWS - Fixed memory leak in extension loading when an error occurs on Windows. (Pierre) +- Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes + seg fault). (davbrown4 at yahoo dot com, Felipe) - Fixed bug #50351 (performance regression handling objects, ten times slower in 5.3 than in 5.2). (Dmitry) - Fixed bug #50345 (nanosleep not detected properly on some solaris versions). diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 7dc706a9ba..a8886bdc62 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -1659,20 +1659,22 @@ static PHP_METHOD(PDOStatement, fetchAll) static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param) /* {{{ */ { struct pdo_bound_param_data param = {0}; + long param_type = PDO_PARAM_STR; param.paramno = -1; - param.param_type = PDO_PARAM_STR; if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, - "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", ¶m.name, - ¶m.namelen, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + ¶m.namelen, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { return 0; } } - + + param.param_type = (int) param_type; + if (param.paramno > 0) { --param.paramno; /* make it zero-based internally */ } else if (!param.name) {