Fix lock after free in module API
Former-commit-id: d88fd1588d292bffc0aa53c299cb52e7a4e91015
This commit is contained in:
parent
198db651d2
commit
9928562dad
@ -257,10 +257,12 @@ int aeCreateRemoteFileEvent(aeEventLoop *eventLoop, int fd, int mask,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fSynchronous)
|
if (fSynchronous)
|
||||||
|
{
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> ulock(cmd.pctl->mutexcv, std::adopt_lock);
|
std::unique_lock<std::mutex> ulock(cmd.pctl->mutexcv, std::adopt_lock);
|
||||||
cmd.pctl->cv.wait(ulock);
|
cmd.pctl->cv.wait(ulock);
|
||||||
ret = cmd.pctl->rval;
|
ret = cmd.pctl->rval;
|
||||||
|
}
|
||||||
delete cmd.pctl;
|
delete cmd.pctl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +302,7 @@ int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn, bool fSynch
|
|||||||
cmd.fLock = fLock;
|
cmd.fLock = fLock;
|
||||||
if (fSynchronous)
|
if (fSynchronous)
|
||||||
{
|
{
|
||||||
cmd.pctl = new (MALLOC_LOCAL) aeCommandControl();
|
cmd.pctl = new (MALLOC_LOCAL) aeCommandControl;
|
||||||
cmd.pctl->mutexcv.lock();
|
cmd.pctl->mutexcv.lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,10 +312,12 @@ int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn, bool fSynch
|
|||||||
AE_ASSERT(size == sizeof(cmd));
|
AE_ASSERT(size == sizeof(cmd));
|
||||||
int ret = AE_OK;
|
int ret = AE_OK;
|
||||||
if (fSynchronous)
|
if (fSynchronous)
|
||||||
|
{
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> ulock(cmd.pctl->mutexcv, std::adopt_lock);
|
std::unique_lock<std::mutex> ulock(cmd.pctl->mutexcv, std::adopt_lock);
|
||||||
cmd.pctl->cv.wait(ulock);
|
cmd.pctl->cv.wait(ulock);
|
||||||
ret = cmd.pctl->rval;
|
ret = cmd.pctl->rval;
|
||||||
|
}
|
||||||
delete cmd.pctl;
|
delete cmd.pctl;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user