]> granicus.if.org Git - php/commitdiff
PHP4 compatibility
authorAntony Dovgal <tony2001@php.net>
Thu, 25 Jan 2007 09:31:23 +0000 (09:31 +0000)
committerAntony Dovgal <tony2001@php.net>
Thu, 25 Jan 2007 09:31:23 +0000 (09:31 +0000)
ext/oci8/oci8_statement.c

index 8dbd6af45b1ddfc1918fbd88b58774b8740e87f4..1b036e8924fe1dcaf28ac091fe65a1eaca3f9cb1 100644 (file)
@@ -1121,11 +1121,11 @@ sb4 php_oci_bind_out_callback(
  Helper function to get column by name and index */
 php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAMETERS, int need_data)
 {
-       zval *z_statement, **column_index;
+       zval *z_statement, *column_index;
        php_oci_statement *statement;
        php_oci_out_column *column;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ", &z_statement, &column_index) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &z_statement, &column_index) == FAILURE) {
                return NULL;
        }
 
@@ -1139,19 +1139,25 @@ php_oci_out_column *php_oci_statement_get_column_helper(INTERNAL_FUNCTION_PARAME
                return NULL;
        }
        
-       if (Z_TYPE_PP(column_index) == IS_STRING) {
-               column = php_oci_statement_get_column(statement, -1, Z_STRVAL_PP(column_index), Z_STRLEN_PP(column_index) TSRMLS_CC);
+       if (Z_TYPE_P(column_index) == IS_STRING) {
+               column = php_oci_statement_get_column(statement, -1, Z_STRVAL_P(column_index), Z_STRLEN_P(column_index) TSRMLS_CC);
                if (!column) {
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid column name \"%s\"", Z_STRVAL_PP(column_index));
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid column name \"%s\"", Z_STRVAL_P(column_index));
                        return NULL;
                }
        } else {
-               convert_to_long_ex(column_index);
-               column = php_oci_statement_get_column(statement, Z_LVAL_PP(column_index), NULL, 0 TSRMLS_CC);
+               zval tmp;
+               /* NB: for PHP4 compat only, it should be using 'Z' instead */
+               tmp = *column_index;
+               zval_copy_ctor(&tmp);
+               convert_to_long(&tmp);
+               column = php_oci_statement_get_column(statement, Z_LVAL(tmp), NULL, 0 TSRMLS_CC);
                if (!column) {
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid column index \"%ld\"", Z_LVAL_PP(column_index));
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid column index \"%ld\"", Z_LVAL(tmp));
+                       zval_dtor(&tmp);
                        return NULL;
                }
+               zval_dtor(&tmp);
        }
        return column;
 } /* }}} */