dllexport bool CallVirtualMethod(unsigned int methodID)
{
+ bool reentrant = !answered;
guiApp.Unlock();
if(serverSocket && serverSocket.connected)
{
else
serverSocket.thread.semaphore.Wait();
}
+ if(reentrant)
+ answered = false;
guiApp.Lock();
return overridden == true;
}
SerialBuffer buffer { };
SerialBuffer virtualsBuffer { };
bool answered, overridden;
+
+ answered = true;
};
#define GETLEDWORD(b) (uint32)(((b)[3] << 24) | ((b)[2] << 16) | ((b)[1] << 8) | (b)[0])
guiApp.Unlock();
if(connected)
{
+ bool result, reentrant = !answered;
unsigned int size = (uint)&((CallMethodPacket)0).args + __ecereBuffer.size; // sizeof(class CallMethodPacket) + __ecereBuffer.size - 1;
CallMethodPacket packet = (CallMethodPacket)new0 byte[size];
packet.type = (DCOMPacketType)htoled((DCOMPacketType)dcom_CallMethod);
else
thread.semaphore.Wait();
}
- return answered == true;
+ result = answered == true;
+ if(reentrant)
+ answered = false;
+ return result;
}
guiApp.Lock();
return false;