Browse Source

Fix for https://github.com/preillyme/v8js/issues/6. This is probably a horrible hack but it works for now until we have a better solution.

Simon Best 12 years ago
parent
commit
06527cf1d9
1 changed files with 7 additions and 0 deletions
  1. 7 0
      v8js_convert.cc

+ 7 - 0
v8js_convert.cc

@@ -384,6 +384,13 @@ static v8::Handle<v8::Value> php_v8js_hash_to_jsobj(zval *value TSRMLS_DC) /* {{
 				newobj->SetHiddenValue(V8JS_SYM(ZEND_ISSET_FUNC_NAME), PHP_V8JS_CALLBACK(isset_ptr));
 				newobj->SetHiddenValue(V8JS_SYM(ZEND_ISSET_FUNC_NAME), PHP_V8JS_CALLBACK(isset_ptr));
 			}
 			}
 		}
 		}
+
+		// See https://github.com/preillyme/v8js/issues/6
+		if (Z_REFCOUNT_P(value) == 1)
+		{
+			Z_SET_REFCOUNT_P(value, 2);
+		}
+
 		newobj->SetAlignedPointerInInternalField(0, (void *) value);
 		newobj->SetAlignedPointerInInternalField(0, (void *) value);
 	} else {
 	} else {
 		new_tpl->SetClassName(V8JS_SYM("Array"));
 		new_tpl->SetClassName(V8JS_SYM("Array"));