From fe27fe0f8bbc116d47ebf752d73bfc0e9ffd2f72 Mon Sep 17 00:00:00 2001 From: hzqst <113660872@qq.com> Date: Thu, 19 Jan 2023 15:31:18 +0800 Subject: [PATCH] 1 --- ascurl/ascurl.cpp | 2 +- asext/include/asext_api.h | 9 ++++++++- asqcvar/asqcvar.cpp | 7 ++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ascurl/ascurl.cpp b/ascurl/ascurl.cpp index 9575bd8..574c73f 100644 --- a/ascurl/ascurl.cpp +++ b/ascurl/ascurl.cpp @@ -107,7 +107,7 @@ class CBaseHTTPRequest if (m_callback) { - ASEXT_CASRefCountedBaseClass_InternalRelease(m_callback->getReference()); + ASEXT_DereferenceCASFunction(m_callback); } } virtual bool IsAsync() const = 0; diff --git a/asext/include/asext_api.h b/asext/include/asext_api.h index 20b05ea..42b5cd7 100644 --- a/asext/include/asext_api.h +++ b/asext/include/asext_api.h @@ -105,8 +105,10 @@ class CASFunction { public: #ifdef _WIN32 - virtual void Release(char bFree) = 0; +#define CASFunction_dtor_firstarg 1 + virtual void Release(char a1) = 0; #else +#define CASFunction_dtor_firstarg virtual void Unknown() = 0; virtual void Release() = 0; #endif @@ -119,6 +121,11 @@ class CASFunction int ref; }; +#define ASEXT_DereferenceCASFunction(callback) if (ASEXT_CASRefCountedBaseClass_InternalRelease(callback->getReference()))\ +{\ + callback->Release(CASFunction_dtor_firstarg);\ +} + class CASServerManager { public: diff --git a/asqcvar/asqcvar.cpp b/asqcvar/asqcvar.cpp index 54cb48b..bb7b8ac 100644 --- a/asqcvar/asqcvar.cpp +++ b/asqcvar/asqcvar.cpp @@ -19,10 +19,7 @@ void ASQCvar_Shutdown() { auto callback = itor->second; - if (ASEXT_CASRefCountedBaseClass_InternalRelease(callback->getReference())) - { - callback->Release(1); - } + ASEXT_DereferenceCASFunction(callback); itor = g_QueryCvar2Callbacks.erase(itor); } @@ -64,7 +61,7 @@ void ASQCvar_CallQueryCvar2Callback(void *pPlayer, int request_id, const char *c if (ASEXT_CASRefCountedBaseClass_InternalRelease(callback->getReference())) { - callback->Release(1); + ASEXT_DereferenceCASFunction(callback); } g_QueryCvar2Callbacks.erase(itor);