diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-02-27 15:40:51 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-27 15:40:51 +0400 |
| commit | 4ba590697eaac2242389f78110b60ddd4c29a779 (patch) | |
| tree | 7319bb36c8310ad2fb5f8198598864847c23cc8a /ext/date/php_date.c | |
| parent | 1c3ba95bb547f8d9b0bd0496238a76ef6a706b07 (diff) | |
| parent | 382b0dfdb7d2ae654f6aeba049ee80c3cd70ff9a (diff) | |
| download | php-git-4ba590697eaac2242389f78110b60ddd4c29a779.tar.gz | |
Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
Diffstat (limited to 'ext/date/php_date.c')
| -rw-r--r-- | ext/date/php_date.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 24cbbd33a7..d3426f944c 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -1836,7 +1836,6 @@ PHP_FUNCTION(getdate) /* define an overloaded iterator structure */ typedef struct { zend_object_iterator intern; - zval *date_period_zval; zval current; php_period_obj *object; int current_index; @@ -1862,7 +1861,7 @@ static void date_period_it_dtor(zend_object_iterator *iter TSRMLS_DC) date_period_it_invalidate_current(iter TSRMLS_CC); - zval_ptr_dtor(iterator->date_period_zval); + zval_ptr_dtor(&iterator->intern.data); efree(iterator); } @@ -1873,7 +1872,7 @@ static void date_period_it_dtor(zend_object_iterator *iter TSRMLS_DC) static int date_period_it_has_more(zend_object_iterator *iter TSRMLS_DC) { date_period_it *iterator = (date_period_it *)iter; - php_period_obj *object = iterator->object; + php_period_obj *object = (php_period_obj *)Z_OBJ(iterator->intern.data); timelib_time *it_time = object->current; /* apply modification if it's not the first iteration */ @@ -1898,7 +1897,7 @@ static int date_period_it_has_more(zend_object_iterator *iter TSRMLS_DC) static zval *date_period_it_current_data(zend_object_iterator *iter TSRMLS_DC) { date_period_it *iterator = (date_period_it *)iter; - php_period_obj *object = iterator->object; + php_period_obj *object = (php_period_obj *)Z_OBJ(iterator->intern.data); timelib_time *it_time = object->current; php_date_obj *newdateobj; @@ -1970,7 +1969,6 @@ zend_object_iterator_funcs date_period_it_funcs = { zend_object_iterator *date_object_period_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) { date_period_it *iterator = emalloc(sizeof(date_period_it)); - php_period_obj *dpobj = (php_period_obj *)Z_OBJ_P(object); if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); @@ -1978,11 +1976,8 @@ zend_object_iterator *date_object_period_get_iterator(zend_class_entry *ce, zval zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); - Z_ADDREF_P(object); - iterator->intern.data = (void*) dpobj; + ZVAL_COPY(&iterator->intern.data, object); iterator->intern.funcs = &date_period_it_funcs; - iterator->date_period_zval = object; - iterator->object = dpobj; ZVAL_UNDEF(&iterator->current); return (zend_object_iterator*)iterator; |
