Pārlūkot izejas kodu

Merge pull request #506 from redbullmarky/php8

Segfault fix when using empty()
Stefan Siegl 2 gadi atpakaļ
vecāks
revīzija
eb61c4ddcf
2 mainītis faili ar 20 papildinājumiem un 1 dzēšanām
  1. 20 0
      tests/issue_504_001.phpt
  2. 0 1
      v8js_v8object_class.cc

+ 20 - 0
tests/issue_504_001.phpt

@@ -0,0 +1,20 @@
+--TEST--
+Test empty() : Segmentation fault caused by 'empty' check on a V8Function object
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+$v = new \V8Js();
+$r = $v->executeString('
+    a = {
+	    main: function() {}
+    };
+', null, V8Js::FLAG_FORCE_ARRAY | V8Js::FLAG_PROPAGATE_PHP_EXCEPTIONS);
+
+if (!empty($r['main'])) {
+    echo 'Ok' . PHP_EOL;
+}
+?>
+--EXPECTF--
+Ok
+

+ 0 - 1
v8js_v8object_class.cc

@@ -933,7 +933,6 @@ PHP_MINIT_FUNCTION(v8js_v8object_class) /* {{{ */
 	/* V8<Object|Function> handlers */
 	memcpy(&v8js_v8object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
 	v8js_v8object_handlers.clone_obj = NULL;
-	v8js_v8object_handlers.cast_object = NULL;
 	v8js_v8object_handlers.get_property_ptr_ptr = v8js_v8object_get_property_ptr_ptr;
 	v8js_v8object_handlers.has_property = v8js_v8object_has_property;
 	v8js_v8object_handlers.read_property = v8js_v8object_read_property;