Kaynağa Gözat

Merge pull request #318 from stesie/issue-316

don't clean properties hash if it is iterated
Stefan Siegl 8 yıl önce
ebeveyn
işleme
4af1cca248
2 değiştirilmiş dosya ile 20 ekleme ve 1 silme
  1. 19 0
      tests/issue_316_basic.phpt
  2. 1 1
      v8js_v8object_class.cc

+ 19 - 0
tests/issue_316_basic.phpt

@@ -0,0 +1,19 @@
+--TEST--
+Test V8::executeString() : Issue #316 endless property iteration
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+
+$v8 = new V8Js();
+
+$values = $v8->executeString('({test: "test"})');
+foreach ($values as $value) {
+    var_dump($value);
+}
+
+?>
+===EOF===
+--EXPECT--
+string(4) "test"
+===EOF===

+ 1 - 1
v8js_v8object_class.cc

@@ -224,7 +224,7 @@ static HashTable *v8js_v8object_get_properties(zval *object) /* {{{ */
 			 * it (instead of crashing the engine). */
 			return obj->properties;
 		}
-	} else {
+	} else if (!obj->properties->u.v.nIteratorsCount) {
 		zend_hash_clean(obj->properties);
 	}