summaryrefslogtreecommitdiff
path: root/ext/oci8/oci8_statement.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/oci8/oci8_statement.c')
-rw-r--r--ext/oci8/oci8_statement.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/ext/oci8/oci8_statement.c b/ext/oci8/oci8_statement.c
index 55983d3e9f..d4f08150e7 100644
--- a/ext/oci8/oci8_statement.c
+++ b/ext/oci8/oci8_statement.c
@@ -25,9 +25,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -1178,7 +1175,8 @@ int php_oci_bind_by_name(php_oci_statement *statement, char *name, size_t name_l
} else if (Z_TYPE_P(var) == IS_STRING) {
value_sz = (sb4) Z_STRLEN_P(var);
} else {
- value_sz = PHP_OCI_PIECE_SIZE;
+ /* Bug-72524: revert value_sz from PHP_OCI_PIECE_SIZE to 0. This restores PHP 5.6 behavior */
+ value_sz = 0;
}
} else {
value_sz = (sb4) maxlength;
@@ -1243,6 +1241,11 @@ int php_oci_bind_by_name(php_oci_statement *statement, char *name, size_t name_l
bindp = zend_hash_update_ptr(statement->binds, zvtmp, bindp);
zend_string_release(zvtmp);
}
+ /* Make sure the minimum of value_sz is 1 to avoid ORA-3149
+ * when both in/out parameters are bound with empty strings
+ */
+ if (value_sz == 0)
+ value_sz = 1;
bindp->descriptor = oci_desc;
bindp->statement = oci_stmt;
@@ -1507,7 +1510,7 @@ php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAME
convert_to_long(&tmp);
column = php_oci_statement_get_column(statement, Z_LVAL(tmp), NULL, 0);
if (!column) {
- php_error_docref(NULL, E_WARNING, "Invalid column index \"%pd\"", Z_LVAL(tmp));
+ php_error_docref(NULL, E_WARNING, "Invalid column index \"" ZEND_LONG_FMT "\"", Z_LVAL(tmp));
zval_dtor(&tmp);
return NULL;
}
@@ -1574,7 +1577,7 @@ int php_oci_bind_array_by_name(php_oci_statement *statement, char *name, size_t
convert_to_array(var);
if (maxlength < -1) {
- php_error_docref(NULL, E_WARNING, "Invalid max length value (%pd)", maxlength);
+ php_error_docref(NULL, E_WARNING, "Invalid max length value (" ZEND_LONG_FMT ")", maxlength);
return 1;
}
@@ -1605,7 +1608,7 @@ int php_oci_bind_array_by_name(php_oci_statement *statement, char *name, size_t
bind = php_oci_bind_array_helper_date(var, max_table_length, statement->connection);
break;
default:
- php_error_docref(NULL, E_WARNING, "Unknown or unsupported datatype given: %pd", type);
+ php_error_docref(NULL, E_WARNING, "Unknown or unsupported datatype given: " ZEND_LONG_FMT, type);
return 1;
break;
}