Fix StoreFromAddress and LoadFromAddress continuing with bad values after error (bug 6080, r=asherkin).
This commit is contained in:
parent
49d769282b
commit
ee595978f8
@ -682,11 +682,11 @@ static cell_t LoadFromAddress(IPluginContext *pContext, const cell_t *params)
|
|||||||
|
|
||||||
if (addr == NULL)
|
if (addr == NULL)
|
||||||
{
|
{
|
||||||
pContext->ThrowNativeError("Address cannot be null");
|
return pContext->ThrowNativeError("Address cannot be null");
|
||||||
}
|
}
|
||||||
else if (reinterpret_cast<uintptr_t>(addr) < VALID_MINIMUM_MEMORY_ADDRESS)
|
else if (reinterpret_cast<uintptr_t>(addr) < VALID_MINIMUM_MEMORY_ADDRESS)
|
||||||
{
|
{
|
||||||
pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr);
|
return pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr);
|
||||||
}
|
}
|
||||||
NumberType size = static_cast<NumberType>(params[2]);
|
NumberType size = static_cast<NumberType>(params[2]);
|
||||||
|
|
||||||
@ -699,10 +699,8 @@ static cell_t LoadFromAddress(IPluginContext *pContext, const cell_t *params)
|
|||||||
case NumberType_Int32:
|
case NumberType_Int32:
|
||||||
return *reinterpret_cast<uint32_t*>(addr);
|
return *reinterpret_cast<uint32_t*>(addr);
|
||||||
default:
|
default:
|
||||||
pContext->ThrowNativeError("Invalid number types %d", size);
|
return pContext->ThrowNativeError("Invalid number types %d", size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -712,11 +710,11 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params)
|
|||||||
|
|
||||||
if (addr == NULL)
|
if (addr == NULL)
|
||||||
{
|
{
|
||||||
pContext->ThrowNativeError("Address cannot be null");
|
return pContext->ThrowNativeError("Address cannot be null");
|
||||||
}
|
}
|
||||||
else if (reinterpret_cast<uintptr_t>(addr) < VALID_MINIMUM_MEMORY_ADDRESS)
|
else if (reinterpret_cast<uintptr_t>(addr) < VALID_MINIMUM_MEMORY_ADDRESS)
|
||||||
{
|
{
|
||||||
pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr);
|
return pContext->ThrowNativeError("Invalid address 0x%x is pointing to reserved memory.", addr);
|
||||||
}
|
}
|
||||||
cell_t data = params[2];
|
cell_t data = params[2];
|
||||||
|
|
||||||
@ -737,10 +735,10 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params)
|
|||||||
*reinterpret_cast<uint32_t*>(addr) = data;
|
*reinterpret_cast<uint32_t*>(addr) = data;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pContext->ThrowNativeError("Invalid number types %d", size);
|
return pContext->ThrowNativeError("Invalid number types %d", size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
REGISTER_NATIVES(coreNatives)
|
REGISTER_NATIVES(coreNatives)
|
||||||
|
Loading…
Reference in New Issue
Block a user