Am 05.06.2017 um 20:49 schrieb Jonas Maebe:
> On 05/06/17 20:37, Denis Kozlov wrote:
>>
>>
>> On 05/06/2017 18:59, Jonas Maebe wrote:
>>> That is why I said "If range checking is off there or disabled via an 
>>> explicit type cast, then
>>> the result is undefined by definition." You use an explicit typecast above.
>>
>> I just wanted to highlight that these cases as legal and I presume not
>> uncommon, particularly if values are deserialized and typecasted.
> 
> Then this de-serialisation code must perform range checking. Again: if you 
> assign an invalid value
> to a variable by typecasting, disabling range checking, inline assembly, 
> passing a pointer to C code
> and overwriting the value there, or in any other way, Pascal code that works 
> with the resulting
> value has undefined behaviour. The program could crash, silently fail, raise 
> a random exception at
> some point, or do anything else.
> 

For the record: this can already happen. If a jump table for a case statement 
is generated, the
compiler does not check the boundaries if the jump table covers the whole 
declared (!) range of the
case variable.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to