summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-03-28 00:03:40 +0400
committerDmitry Stogov <dmitry@zend.com>2013-03-28 00:03:40 +0400
commit85e5e60777209c13c71785da31af86a5e0a98d92 (patch)
tree4bf05ea80f01ec86730fa8cfd89626562f81c461 /Zend/zend_compile.c
parent1182a3356c6c1989a686aab5258e1d47c56b2955 (diff)
downloadphp-git-85e5e60777209c13c71785da31af86a5e0a98d92.tar.gz
Fixed bug #64529 (Ran out of opcode space)
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 766a2de01a..82275ce624 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1798,7 +1798,7 @@ void zend_do_end_function_declaration(const znode *function_token TSRMLS_DC) /*
zend_do_return(NULL, 0 TSRMLS_CC);
pass_two(CG(active_op_array) TSRMLS_CC);
- zend_release_labels(TSRMLS_C);
+ zend_release_labels(0 TSRMLS_CC);
if (CG(active_class_entry)) {
zend_check_magic_method_implementation(CG(active_class_entry), (zend_function*)CG(active_op_array), E_COMPILE_ERROR TSRMLS_CC);
@@ -2320,13 +2320,14 @@ void zend_do_goto(const znode *label TSRMLS_DC) /* {{{ */
}
/* }}} */
-void zend_release_labels(TSRMLS_D) /* {{{ */
+void zend_release_labels(int temporary TSRMLS_DC) /* {{{ */
{
if (CG(context).labels) {
zend_hash_destroy(CG(context).labels);
FREE_HASHTABLE(CG(context).labels);
+ CG(context).labels = NULL;
}
- if (!zend_stack_is_empty(&CG(context_stack))) {
+ if (!temporary && !zend_stack_is_empty(&CG(context_stack))) {
zend_compiler_context *ctx;
zend_stack_top(&CG(context_stack), (void**)&ctx);