From f5a730fa45343faa157af1c988c98e5badff7a6d Mon Sep 17 00:00:00 2001 From: arch1t3cht Date: Sat, 14 Jan 2023 00:13:47 +0100 Subject: [PATCH] avisynth: Only increase refcount when fully initialized When Avisynth is not installed or not functional, this would otherwise cause a crash when trying to initialize Avisynth more than once, since after the first time the refcount would have been incrased anyway. --- src/avisynth_wrap.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/avisynth_wrap.cpp b/src/avisynth_wrap.cpp index eb957fa3c..1dc5d71b2 100644 --- a/src/avisynth_wrap.cpp +++ b/src/avisynth_wrap.cpp @@ -67,7 +67,7 @@ const AVS_Linkage *AVS_linkage = nullptr; typedef IScriptEnvironment* __stdcall FUNC(int); AviSynthWrapper::AviSynthWrapper() { - if (!avs_refcount++) { + if (!avs_refcount){ #ifdef _WIN32 #define CONCATENATE(x, y) x ## y #define _Lstr(x) CONCATENATE(L, x) @@ -94,6 +94,8 @@ AviSynthWrapper::AviSynthWrapper() { if (!env) throw AvisynthError("Failed to create a new avisynth script environment. Avisynth is too old?"); + avs_refcount++; + AVS_linkage = env->GetAVSLinkage(); // Set memory limit