}
/* }}} */
-ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy) /* {{{ */
+ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy TSRMLS_DC) /* {{{ */
{
if (Z_TYPE_P(expr) == IS_STRING) {
return 0;
again:
switch (Z_TYPE_P(expr)) {
case IS_NULL:
- case IS_FALSE: {
- TSRMLS_FETCH();
+ case IS_FALSE:
ZVAL_EMPTY_STRING(expr_copy);
- break;
- }
- case IS_TRUE: {
- TSRMLS_FETCH();
+ break;
+ case IS_TRUE:
if (CG(one_char_string)['1']) {
ZVAL_INT_STR(expr_copy, CG(one_char_string)['1']);
} else {
ZVAL_NEW_STR(expr_copy, STR_INIT("1", 1, 0));
}
- break;
- }
+ break;
case IS_RESOURCE: {
char buf[sizeof("Resource id #") + MAX_LENGTH_OF_LONG];
int len;
ZVAL_NEW_STR(expr_copy, STR_INIT("Array", sizeof("Array") - 1, 0));
break;
case IS_OBJECT:
- {
- TSRMLS_FETCH();
-
- if (Z_OBJ_HANDLER_P(expr, cast_object)) {
- Z_ADDREF_P(expr);
- if (Z_OBJ_HANDLER_P(expr, cast_object)(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
- zval_ptr_dtor(expr);
- break;
- }
+ if (Z_OBJ_HANDLER_P(expr, cast_object)) {
+ Z_ADDREF_P(expr);
+ if (Z_OBJ_HANDLER_P(expr, cast_object)(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
zval_ptr_dtor(expr);
+ break;
}
- if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) {
- zval rv;
- zval *z = Z_OBJ_HANDLER_P(expr, get)(expr, &rv TSRMLS_CC);
-
- Z_ADDREF_P(z);
- if (Z_TYPE_P(z) != IS_OBJECT) {
- if (zend_make_printable_zval(z, expr_copy)) {
- zval_ptr_dtor(z);
- } else {
- ZVAL_ZVAL(expr_copy, z, 0, 1);
- }
- return 1;
+ zval_ptr_dtor(expr);
+ }
+ if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) {
+ zval rv;
+ zval *z = Z_OBJ_HANDLER_P(expr, get)(expr, &rv TSRMLS_CC);
+
+ Z_ADDREF_P(z);
+ if (Z_TYPE_P(z) != IS_OBJECT) {
+ if (zend_make_printable_zval(z, expr_copy TSRMLS_CC)) {
+ zval_ptr_dtor(z);
+ } else {
+ ZVAL_ZVAL(expr_copy, z, 0, 1);
}
- zval_ptr_dtor(z);
+ return 1;
}
- zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", Z_OBJCE_P(expr)->name->val);
- ZVAL_EMPTY_STRING(expr_copy);
+ zval_ptr_dtor(z);
}
+ zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", Z_OBJCE_P(expr)->name->val);
+ ZVAL_EMPTY_STRING(expr_copy);
break;
case IS_DOUBLE:
ZVAL_DUP(expr_copy, expr);
BEGIN_EXTERN_C()
ZEND_API char *get_zend_version(void);
-ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy);
+ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy TSRMLS_DC);
ZEND_API int zend_print_zval(zval *expr, int indent TSRMLS_DC);
ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC);
ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC);
if(Z_TYPE_P(z) != IS_OBJECT) {
zval_dtor(arg);
ZVAL_NULL(arg);
- if (!zend_make_printable_zval(z, arg)) {
+ if (!zend_make_printable_zval(z, arg TSRMLS_CC)) {
ZVAL_ZVAL(arg, z, 1, 1);
}
*pl = Z_STRLEN_P(arg);
if(Z_TYPE_P(z) != IS_OBJECT) {
zval_dtor(arg);
ZVAL_NULL(arg);
- if (!zend_make_printable_zval(z, arg)) {
+ if (!zend_make_printable_zval(z, arg TSRMLS_CC)) {
ZVAL_ZVAL(arg, z, 1, 1);
}
*str = Z_STR_P(arg);
ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_CONCAT);
if (Z_TYPE_P(op1) != IS_STRING) {
- use_copy1 = zend_make_printable_zval(op1, &op1_copy);
+ use_copy1 = zend_make_printable_zval(op1, &op1_copy TSRMLS_CC);
}
if (Z_TYPE_P(op2) != IS_STRING) {
- use_copy2 = zend_make_printable_zval(op2, &op2_copy);
+ use_copy2 = zend_make_printable_zval(op2, &op2_copy TSRMLS_CC);
}
}
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
if (Z_TYPE_P(var) != IS_STRING) {
ZVAL_DEREF(var);
if (Z_TYPE_P(var) != IS_STRING) {
- use_copy = zend_make_printable_zval(var, &var_copy);
+ use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC);
if (use_copy) {
var = &var_copy;
*
* @return zval* UTF16 string.
*/
-zval* collator_make_printable_zval( zval* arg, zval *rv )
+zval* collator_make_printable_zval( zval* arg, zval *rv)
{
zval arg_copy;
int use_copy = 0;
if( Z_TYPE_P(arg) != IS_STRING )
{
- use_copy = zend_make_printable_zval(arg, &arg_copy);
+ TSRMLS_FETCH();
+
+ use_copy = zend_make_printable_zval(arg, &arg_copy TSRMLS_CC);
if( use_copy )
{
for (i = 0; i < op_array->last_literal; i++) {
zval zv = op_array->literals[i].constant;
- use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv);
+ use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv TSRMLS_CC);
fprintf(stderr, "Literal %d, val (%d):%s\n", i, Z_STRLEN(zv), Z_STRVAL(zv));
if (use_copy) {
zval_dtor(&zv);
for (i = 0; i < op_array->last_literal; i++) {
zval zv = op_array->literals[i].constant;
- use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv);
+ use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv TSRMLS_CC);
fprintf(stderr, "Literal %d, val (%d):%s\n", i, Z_STRLEN(zv), Z_STRVAL(zv));
if (use_copy) {
zval_dtor(&zv);
}
if (Z_TYPE(key) != IS_STRING) {
- if (zend_make_printable_zval(&key, &key_copy)) {
+ if (zend_make_printable_zval(&key, &key_copy TSRMLS_CC)) {
key = key_copy;
}
}
}
ZVAL_UNDEF(&subject_copy);
- use_copy = zend_make_printable_zval(subject_ptr, &subject_copy);
+ use_copy = zend_make_printable_zval(subject_ptr, &subject_copy TSRMLS_CC);
if (use_copy) {
subject = Z_STRVAL(subject_copy);
subject_len = Z_STRLEN(subject_copy);
} else {
ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->current.data);
}
- use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy);
+ use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy TSRMLS_CC);
if (use_copy) {
ZVAL_COPY(&intern->u.caching.zstr, &expr_copy);
//??? INIT_PZVAL(intern->u.caching.zstr);
zval expr_copy;
int use_copy;
- use_copy = zend_make_printable_zval(callback_name, &expr_copy);
+ use_copy = zend_make_printable_zval(callback_name, &expr_copy TSRMLS_CC);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Cannot call the messagehandler %s", Z_STRVAL(expr_copy));
zval_dtor(&expr_copy);
}
* It is reset to ' ' by non-numeric formats
*/
switch (*fmt) {
- case 'Z':
- zvp = (zval*) va_arg(ap, zval*);
- free_zcopy = zend_make_printable_zval(zvp, &zcopy);
+ case 'Z': {
+ TSRMLS_FETCH();
+ zvp = (zval*) va_arg(ap, zval*);
+ free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC);
if (free_zcopy) {
zvp = &zcopy;
}
s = Z_STRVAL_P(zvp);
if (adjust_precision && precision < s_len) {
s_len = precision;
- }
+ }
break;
+ }
case 'u':
switch(modifier) {
default:
* It is reset to ' ' by non-numeric formats
*/
switch (*fmt) {
- case 'Z':
+ case 'Z': {
+ TSRMLS_FETCH();
zvp = (zval*) va_arg(ap, zval*);
- free_zcopy = zend_make_printable_zval(zvp, &zcopy);
+ free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC);
if (free_zcopy) {
zvp = &zcopy;
}
s_len = precision;
}
break;
+ }
case 'u':
switch(modifier) {
default: