Skip to content

Commit 6ab1106

Browse files
authored
Merge pull request #415 from stesie/fix-ftbfs-v8-extension
Fix double-free related to std::unique_ptr use
2 parents 148bc50 + bac8a96 commit 6ab1106

File tree

4 files changed

+8
-10
lines changed

4 files changed

+8
-10
lines changed

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ services:
55
- docker
66

77
env:
8-
- V8VER=7.1
8+
- V8VER=7.5
99
PHPVER=7.0
10-
- V8VER=7.1
10+
- V8VER=7.5
1111
PHPVER=7.1
12-
- V8VER=7.1
12+
- V8VER=7.5
1313
PHPVER=7.2
1414

1515
script: make -f Makefile.travis test

Makefile.travis

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Configure and build scripts for travis CI system
2-
V8VER ?= 7.1
2+
V8VER ?= 7.5
33

44
IMAGENAME ?= v8js-test
55

README.Linux.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ git checkout 6.4.388.18
5555
gclient sync
5656
5757
# Setup GN
58-
tools/dev/v8gen.py -vv x64.release -- is_component_build=true
58+
tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false
5959
6060
# Build
6161
ninja -C out.gn/x64.release/

v8js_class.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct v8js_jsext {
6767
int deps_count;
6868
zend_string *name;
6969
zend_string *source;
70-
v8::Extension *extension;
7170
};
7271
/* }}} */
7372

@@ -272,7 +271,6 @@ static void v8js_jsext_free_storage(v8js_jsext *jsext) /* {{{ */
272271
if (jsext->deps) {
273272
v8js_free_ext_strarr(jsext->deps, jsext->deps_count);
274273
}
275-
delete jsext->extension;
276274

277275
// Free the persisted non-interned strings we allocated.
278276
if (jsext->name) {
@@ -1054,7 +1052,7 @@ static int v8js_register_extension(zend_string *name, zend_string *source, zval
10541052
zend_hash_copy(jsext->deps_ht, Z_ARRVAL_P(deps_arr), v8js_persistent_zval_ctor);
10551053
}
10561054

1057-
jsext->extension = new v8::Extension(ZSTR_VAL(jsext->name), ZSTR_VAL(jsext->source), jsext->deps_count, jsext->deps);
1055+
v8::Extension *extension = new v8::Extension(ZSTR_VAL(jsext->name), ZSTR_VAL(jsext->source), jsext->deps_count, jsext->deps);
10581056

10591057
if (!zend_hash_add_ptr(v8js_process_globals.extensions, jsext->name, jsext)) {
10601058
v8js_jsext_free_storage(jsext);
@@ -1068,8 +1066,8 @@ static int v8js_register_extension(zend_string *name, zend_string *source, zval
10681066
v8js_process_globals.lock.unlock();
10691067
#endif
10701068

1071-
jsext->extension->set_auto_enable(auto_enable ? true : false);
1072-
v8::RegisterExtension(jsext->extension);
1069+
extension->set_auto_enable(auto_enable ? true : false);
1070+
v8::RegisterExtension(std::unique_ptr<v8::Extension>(extension));
10731071

10741072
return SUCCESS;
10751073
}

0 commit comments

Comments
 (0)