php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | |
Patch oci8_statement.patch_7_1_8 for OCI8 related Bug #73002Patch version 2017-08-10 13:06 UTC Return to Bug #73002 | Download this patchThis patch renders other patches obsolete Obsolete patches:
Developer: lzsiga@freemail.c3.hu*** ext/oci8/oci8_statement.c Tue Aug 1 19:36:51 2017 --- ../php-7.1.8-changed/ext/oci8/oci8_statement.c Thu Aug 10 13:25:20 2017 *************** *** 979,995 **** } zval_dtor(val); ZVAL_NULL(val); ! } else if (Z_TYPE_P(bind->zval) == IS_STRING ! && Z_STRLEN_P(bind->zval) > 0 ! && Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] != '\0') { ! /* The post- PHP 5.3 feature for "interned" strings disallows ! * their reallocation but (i) any IN binds either interned or ! * not should already be null terminated and (ii) for OUT ! * binds, php_oci_bind_out_callback() should have allocated a ! * new string that we can modify here. ! */ ! Z_STR_P(bind->zval) = zend_string_extend(Z_STR_P(bind->zval), Z_STRLEN_P(bind->zval)+1, 0); ! Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] = '\0'; } else if (Z_TYPE_P(bind->zval) == IS_ARRAY) { int i; zval *entry = NULL; --- 979,997 ---- } zval_dtor(val); ZVAL_NULL(val); ! } else if (Z_TYPE_P(bind->zval) == IS_STRING) { ! Z_STRLEN_P(bind->zval)= bind->dummy_len; ! if (Z_STRLEN_P(bind->zval) > 0 && ! Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] != '\0') { ! /* The post- PHP 5.3 feature for "interned" strings disallows ! * their reallocation but (i) any IN binds either interned or ! * not should already be null terminated and (ii) for OUT ! * binds, php_oci_bind_out_callback() should have allocated a ! * new string that we can modify here. ! */ ! Z_STR_P(bind->zval) = zend_string_extend(Z_STR_P(bind->zval), Z_STRLEN_P(bind->zval)+1, 0); ! Z_STRVAL_P(bind->zval)[ Z_STRLEN_P(bind->zval) ] = '\0'; ! } } else if (Z_TYPE_P(bind->zval) == IS_ARRAY) { int i; zval *entry = NULL; *************** *** 1371,1376 **** --- 1373,1379 ---- *bufpp = 0; *alenp = -1; *indpp = (dvoid *)&phpbind->indicator; + phpbind->dummy_len= 0; /* so far, 'dummy_len' meant the maximum length; from now, it is the actual length */ } else if ((phpbind->descriptor == 0) && (phpbind->statement == 0)) { /* "normal string bind */ convert_to_string(val); *************** *** 1386,1391 **** --- 1389,1395 ---- if ((phpbind->dummy_len > 0) && (phpbind->dummy_len < *alenp)) *alenp = phpbind->dummy_len; *indpp = (dvoid *)&phpbind->indicator; + phpbind->dummy_len= *alenp; /* so far, 'dummy_len' meant the maximum length; from now, it is the actual length */ } else if (phpbind->statement != 0) { /* RSET */ *bufpp = phpbind->statement; *************** *** 1477,1484 **** ZVAL_STRINGL(val, NULL, Z_STRLEN(phpbind->zval) + 1); #endif ! /* XXX we assume that zend-zval len has 4 bytes */ ! *alenpp = (ub4*) &Z_STRLEN_P(phpbind->zval); *bufpp = Z_STRVAL_P(phpbind->zval); *piecep = OCI_ONE_PIECE; *rcodepp = &phpbind->retcode; --- 1481,1489 ---- ZVAL_STRINGL(val, NULL, Z_STRLEN(phpbind->zval) + 1); #endif ! /* XXX we assume that zend-zval len has 4 bytes -- doesn't work on big endian PowerPC-64 */ ! phpbind->dummy_len= Z_STRLEN_P(phpbind->zval); ! *alenpp = &phpbind->dummy_len; *bufpp = Z_STRVAL_P(phpbind->zval); *piecep = OCI_ONE_PIECE; *rcodepp = &phpbind->retcode; DONE |
Copyright © 2001-2024 The PHP Group All rights reserved. |
Last updated: Sat Dec 21 15:01:29 2024 UTC |