If an exception handler is triggered from within low-level C code in a primitive, nil is incorrectly returned as the result of the Smalltalk method that called the primitive.
For example, if an exception handler is defined for AlmostOutOfMemory that exits using #resume, and that exception is triggered by the concatenate operator #, (which calls primitive 615) from the code:
result := string1 , string2.
The result will be nil.
Refactor code so that problematic operations are isolated in their own block and can be restarted from the beginning, so you can use #retry in the exception handler code that covers the block.
Last updated: 7/25/14