diff --git a/core/smn_entities.cpp b/core/smn_entities.cpp index 54a7e422..4917f503 100644 --- a/core/smn_entities.cpp +++ b/core/smn_entities.cpp @@ -1924,18 +1924,24 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params) bIsStringIndex = (td->fieldType != FIELD_CHARACTER); - if (bIsStringIndex && (element < 0 || element >= td->fieldSize)) + if (element != 0) { - return pContext->ThrowNativeError("Element %d is out of bounds (Prop %s has %d elements).", - element, - prop, - td->fieldSize); - } - else if (element != 0) - { - return pContext->ThrowNativeError("Prop %s is not an array. Element %d is invalid.", - prop, - element); + if (bIsStringIndex) + { + if (element < 0 || element >= td->fieldSize) + { + return pContext->ThrowNativeError("Element %d is out of bounds (Prop %s has %d elements).", + element, + prop, + td->fieldSize); + } + } + else + { + return pContext->ThrowNativeError("Prop %s is not an array. Element %d is invalid.", + prop, + element); + } } offset = info.actual_offset; @@ -2061,6 +2067,27 @@ static cell_t SetEntPropString(IPluginContext *pContext, const cell_t *params) offset = info.actual_offset; bIsStringIndex = (td->fieldType != FIELD_CHARACTER); + + if (element != 0) + { + if (bIsStringIndex) + { + if (element < 0 || element >= td->fieldSize) + { + return pContext->ThrowNativeError("Element %d is out of bounds (Prop %s has %d elements).", + element, + prop, + td->fieldSize); + } + } + else + { + return pContext->ThrowNativeError("Prop %s is not an array. Element %d is invalid.", + prop, + element); + } + } + if (bIsStringIndex) { offset += (element * (td->fieldSizeInBytes / td->fieldSize));