Inform - Support - Patches

About Patches  

Compiler  
Library  

DM4 Errata  

Issue C62127

Multiple assignment involving arrays
Submitted by: Roger Firth     Appeared in: Compiler 6.21 or before     Fixed in: Compiler 6.30
Problem

Multiple assignment involving pointer arithmetic doesn't work. For example:

theString->0 = theString->(Pointer-1) = $27;

Both bytes are being set to 4 (presumably Pointer-1) rather than to $27.

Update (by David Kinder)

This occurs only in Strict mode. The problem appears to be that the Strict mode array bounds check thinks it can clobber the contents of TEMP1, which in this case is already holding the constant $27. Or, possibly, that the multiple assignment code generation thinks TEMP1 is a safe location to store the assigned value, which isn't true here.

Solution

None submitted (but an easy workaround is to use two separate assignments).


Last updated 2 May 2008. The librarian in charge of this page is Roger Firth. Please email any comments, suggestions or corrections to roger@firthworks.com.