From c30298bf57e2325d77fdde46e81b5f4971bab349 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 28 Sep 2021 22:40:04 +0300 Subject: [PATCH] Tracing JIT: Fixed possible memory-leak or missed destructor call. Reference-counter of return_value may be indirectly decremented to 1. --- ext/opcache/jit/zend_jit_trace.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 455bcce6ef7..6c51f717d92 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -1786,6 +1786,11 @@ propagate_arg: return_value_info.type &= ~MAY_BE_UNDEF; return_value_info.type |= MAY_BE_NULL; } + if (return_value_info.type & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) { + /* CVs are going to be destructed and the reference-counter + of return value may be decremented to 1 */ + return_value_info.type |= MAY_BE_RC1; + } return_value_info.type &= ~MAY_BE_GUARD; } break;