Actually, no. Each cell has a length word and pointers always point after this so the assertion check is correct. However the bug was related to there being a zero-sized cell, i.e. a cell that only has a length word, at the top of a segment. The cell address looks as though it is at the start of the next segment and should have been adjusted. Zero-sized cells can arise from Array.fromList [].
David
On 13/11/2017 16:48, James Clarke wrote:
Without having looked at the code in question, that assertion seems somewhat unusual; a typical in-range check has >= and <. Perhaps it's a bit naive, but have you tried that?
James
On 13 Nov 2017, at 16:32, Rob Arthan <rda at lemma-one.com> wrote:
David,
Thanks again, but I've got two ProofPower source files further on and then I get a different assertion failure:
Assertion failed: (val.AsAddress() > descr->originalAddress && val.AsAddress() <= (char*)descr->originalAddress + descr->segmentSize), function RelocateAddressAt, file savestate.cpp, line 929.