Michael van der Gulik wrote:
I found and fixed my first bug!! :-). Squeak is kind of addictive, isn't it. I'll work out how to submit things properly later.
"MaFilename>>upTo:" appends the pathDelimiter (see the source) too early. If you only specify the filename without a path, it automatically prefixes a "/" to the filename, which is wrong.
Next error: a failed primitive.
Magma extends the ByteArray class a bit - maUint:at: and maUint:at:put: fail quite readily. This is because they call ByteArray>>integerAt:put:size:signed: which is a <primitive: 'primitiveFFIIntegerAtPut' module:'SqueakFFIPrims'>. And I don't have a working FFI on my system.
Luckily, the problem is easy to fix: ByteArray>>maUint:at and maUint:at:put both have handy (big-endian?) alternative implementations at the end of the function. Commenting out the first part of these methods works quite nicely.. I think. Untested, but it doesn't crash and burn this time.
A question remains: something like ByteArray>>integerAt:.... seems like fairly basic functionality. Why aren't these just "normal" primitives, or at least compiled into core Squeak instead of in the FFI (which I assume to be the Foreign Function Interface). FFI is platform dependant.
Michael.