From 337731587ccf844e4a87e1aa8e82cedd993edc45 Mon Sep 17 00:00:00 2001 From: Appla Date: Tue, 15 Sep 2026 18:22:31 +0800 Subject: [PATCH] fix: use std::lock_guard in v8js_ini_string to prevent double-unlock --- v8js_main.cc | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/v8js_main.cc b/v8js_main.cc index 627949a0..76f3ef14 100644 --- a/v8js_main.cc +++ b/v8js_main.cc @@ -38,14 +38,11 @@ static bool v8js_ini_string(char **field, const zend_string *new_value)/* {{{ */ bool immutable = false; #ifdef ZTS - v8js_process_globals.lock.lock(); + std::lock_guard lock(v8js_process_globals.lock); if(v8js_process_globals.v8_initialized) { - v8js_process_globals.lock.unlock(); immutable = true; } - - v8js_process_globals.lock.unlock(); #else immutable = V8JSG(v8_initialized); #endif @@ -61,11 +58,9 @@ static bool v8js_ini_string(char **field, const zend_string *new_value)/* {{{ */ *field = NULL; } - if (!ZSTR_VAL(new_value)[0]) { - return SUCCESS; + if (ZSTR_VAL(new_value)[0]) { + *field = zend_strndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); } - - *field = zend_strndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); } return SUCCESS;