diff options
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r-- | Zend/zend_generators.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 68c1865c00..df94446d6f 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -115,7 +115,7 @@ static void zend_generator_cleanup_unfinished_execution( } /* }}} */ -ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution) /* {{{ */ +ZEND_API void zend_generator_close(zend_generator *generator, bool finished_execution) /* {{{ */ { if (EXPECTED(generator->execute_data)) { zend_execute_data *execute_data = generator->execute_data; @@ -165,14 +165,14 @@ static void zend_generator_remove_child(zend_generator_node *node, zend_generato { ZEND_ASSERT(node->children >= 1); if (node->children == 1) { - node->child.single.child = NULL; + node->child.single = NULL; } else { HashTable *ht = node->child.ht; zend_hash_index_del(ht, (zend_ulong) child); if (node->children == 2) { zend_generator *other_child; ZEND_HASH_FOREACH_PTR(ht, other_child) { - node->child.single.child = other_child; + node->child.single = other_child; break; } ZEND_HASH_FOREACH_END(); zend_hash_destroy(ht); @@ -479,13 +479,13 @@ static void zend_generator_add_child(zend_generator *generator, zend_generator * zend_generator_node *node = &generator->node; if (node->children == 0) { - node->child.single.child = child; + node->child.single = child; } else { if (node->children == 1) { HashTable *ht = emalloc(sizeof(HashTable)); zend_hash_init(ht, 0, NULL, NULL, 0); zend_hash_index_add_new_ptr(ht, - (zend_ulong) node->child.single.child, node->child.single.child); + (zend_ulong) node->child.single, node->child.single); node->child.ht = ht; } @@ -524,7 +524,7 @@ ZEND_API zend_generator *zend_generator_update_root(zend_generator *generator) static zend_generator *get_new_root(zend_generator *generator, zend_generator *root) { while (!root->execute_data && root->node.children == 1) { - root = root->node.child.single.child; + root = root->node.child.single; } if (root->execute_data) { @@ -614,9 +614,6 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener p = &ht->arData[pos]; value = &p->val; - if (Z_TYPE_P(value) == IS_INDIRECT) { - value = Z_INDIRECT_P(value); - } pos++; } while (Z_ISUNDEF_P(value)); @@ -1115,17 +1112,11 @@ zend_object_iterator *zend_generator_get_iterator(zend_class_entry *ce, zval *ob void zend_register_generator_ce(void) /* {{{ */ { - zend_class_entry ce; - - INIT_CLASS_ENTRY(ce, "Generator", class_Generator_methods); - zend_ce_generator = zend_register_internal_class(&ce); - zend_ce_generator->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + zend_ce_generator = register_class_Generator(zend_ce_iterator); zend_ce_generator->create_object = zend_generator_create; zend_ce_generator->serialize = zend_class_serialize_deny; zend_ce_generator->unserialize = zend_class_unserialize_deny; - /* get_iterator has to be assigned *after* implementing the interface */ - zend_class_implements(zend_ce_generator, 1, zend_ce_iterator); zend_ce_generator->get_iterator = zend_generator_get_iterator; memcpy(&zend_generator_handlers, &std_object_handlers, sizeof(zend_object_handlers)); @@ -1135,7 +1126,6 @@ void zend_register_generator_ce(void) /* {{{ */ zend_generator_handlers.clone_obj = NULL; zend_generator_handlers.get_constructor = zend_generator_get_constructor; - INIT_CLASS_ENTRY(ce, "ClosedGeneratorException", NULL); - zend_ce_ClosedGeneratorException = zend_register_internal_class_ex(&ce, zend_ce_exception); + zend_ce_ClosedGeneratorException = register_class_ClosedGeneratorException(zend_ce_exception); } /* }}} */ |