diff --git a/extensions/regex/extension.cpp b/extensions/regex/extension.cpp index 2b43f8455..c35015b83 100644 --- a/extensions/regex/extension.cpp +++ b/extensions/regex/extension.cpp @@ -87,10 +87,20 @@ static cell_t CompileRegex(IPluginContext *pCtx, const cell_t *params) const char *err = x->mError; *eOff = x->mErrorOffset; pCtx->StringToLocal(params[3], params[4], err ? err:"unknown"); + delete x; return 0; } - return g_pHandleSys->CreateHandle(g_RegexHandle, (void*)x, pCtx->GetIdentity(), myself->GetIdentity(), NULL); + HandleError error = HandleError_None; + Handle_t regexHandle = g_pHandleSys->CreateHandle(g_RegexHandle, (void*)x, pCtx->GetIdentity(), myself->GetIdentity(), &error); + if (!regexHandle || error != HandleError_None) + { + delete x; + pCtx->ReportError("Allocation of regex handle failed, error code #%d", error); + return 0; + } + + return regexHandle; }