diff options
author | Andi Gutmans <andi@php.net> | 2004-03-14 13:52:36 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2004-03-14 13:52:36 +0000 |
commit | 88de69b97c53b33a8ab365a133d0498e15dbb369 (patch) | |
tree | fe6893d79c5bf8c5726ff250de70dc4db7b06d7f | |
parent | 4f897b2f3c9fda157a90e684d23d47eb1e6ae47b (diff) | |
download | php-git-88de69b97c53b33a8ab365a133d0498e15dbb369.tar.gz |
- Support Cast operator in convert_to_* so that we support internal
- extensions such as SimpleXML. This is for Sterling.
-rw-r--r-- | Zend/zend.c | 3 | ||||
-rw-r--r-- | Zend/zend_object_handlers.c | 6 | ||||
-rw-r--r-- | Zend/zend_object_handlers.h | 1 | ||||
-rw-r--r-- | Zend/zend_operators.c | 8 |
4 files changed, 9 insertions, 9 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 4fc4fdcb21..bd188c1e26 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -216,7 +216,8 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop case IS_OBJECT: if (expr->value.obj.handlers->cast_object) { TSRMLS_FETCH(); - if (expr->value.obj.handlers->cast_object == zend_std_cast_object) { + /* Standard PHP objects */ + if (expr->value.obj.handlers == &std_object_handlers) { if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING, 0 TSRMLS_CC) == SUCCESS) { break; } diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index b6645a8ebf..1812a31aa4 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -945,10 +945,6 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty return FAILURE; } -int zend_std_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC) -{ - return FAILURE; -} ZEND_API zend_object_handlers std_object_handlers = { zend_objects_store_add_ref, /* add_ref */ @@ -973,7 +969,7 @@ ZEND_API zend_object_handlers std_object_handlers = { zend_std_object_get_class, /* get_class_entry */ zend_std_object_get_class_name, /* get_class_name */ zend_std_compare_objects, /* compare_objects */ - zend_std_cast_object, /* cast_object */ + NULL, /* cast_object */ }; /* diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h index 2f414c22d3..a9ad231fb8 100644 --- a/Zend/zend_object_handlers.h +++ b/Zend/zend_object_handlers.h @@ -129,7 +129,6 @@ ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce, ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, char *property_name, int property_name_len, zend_bool silent TSRMLS_DC); ZEND_API zend_bool zend_std_unset_static_property(zend_class_entry *ce, char *property_name, int property_name_len TSRMLS_DC); -int zend_std_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC); ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC); diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 8698df2096..4f23d757a7 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -203,7 +203,9 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC) (holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \ break; \ case IS_OBJECT: \ - (holder).value.lval = 1; /* TBI!! */ \ + (holder) = (*(op)); \ + zval_copy_ctor(&(holder)); \ + convert_to_long(&(holder)); \ break; \ case IS_BOOL: \ case IS_RESOURCE: \ @@ -246,7 +248,9 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC) (holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \ break; \ case IS_OBJECT: \ - (holder).value.lval = 1; /* TBI!! */ \ + (holder) = (*(op)); \ + zval_copy_ctor(&(holder)); \ + convert_to_boolean(&(holder)); \ break; \ default: \ (holder).value.lval = 0; \ |