I was so excited at the prospect of getting a certificate!
Interpreter>>writeImageFileIO:
you need to change the self putLong: (self startOfMemory) toFile: f.
to I think self putLong: 0 toFile: f.
I had tried that:
but still no joy.
I have included my image writing method below
thanks for the support
Keith
----
writeImageFileIO: imageBytes
| headerStart headerSize f bytesWritten sCWIfn okToWrite | self var: #f type: 'sqImageFile'. self var: #headerStart type: 'squeakFileOffsetType '. self var: #sCWIfn type: 'void *'.
"kph mod - to support binary diffs"
self adjustAllOopsBy: (0 - self startOfMemory).
"If the security plugin can be loaded, use it to check for write permission. If not, assume it's ok" sCWIfn := self ioLoadFunction: 'secCanWriteImage' From: 'SecurityPlugin'. sCWIfn ~= 0 ifTrue:[okToWrite := self cCode: '((sqInt (*)(void))sCWIfn)()'. okToWrite ifFalse:[^self primitiveFail]].
"local constants" headerStart := 0. headerSize := 64. "header size in bytes; do not change!"
f := self cCode: 'sqImageFileOpen(imageName, "wb")'. f = nil ifTrue: [ "could not open the image file for writing" self success: false. ^ nil].
headerStart := self cCode: 'sqImageFileStartLocation(f,imageName,headerSize+imageBytes)'. self cCode: '/* Note: on Unix systems one could put an exec command here, padded to 512 bytes */'. "position file to start of header" self sqImageFile: f Seek: headerStart.
self putLong: (self imageFormatVersion) toFile: f. self putLong: headerSize toFile: f. self putLong: imageBytes toFile: f. self putLong: 0 "(self startOfMemory) kph mod - for binary diffs" toFile: f. self putLong: specialObjectsOop toFile: f. self putLong: lastHash toFile: f. self putLong: (self ioScreenSize) toFile: f. self putLong: fullScreenFlag toFile: f. self putLong: extraVMMemory toFile: f. 1 to: 7 do: [:i | self putLong: 0 toFile: f]. "fill remaining header words with zeros" successFlag ifFalse: [ "file write or seek failure" self cCode: 'sqImageFileClose(f)'. ^ nil].
"position file after the header" self sqImageFile: f Seek: headerStart + headerSize.
"write the image data" bytesWritten := self cCode: 'sqImageFileWrite(pointerForOop(memory), sizeof(unsigned char), imageBytes, f)'. self success: bytesWritten = imageBytes. self cCode: 'sqImageFileClose(f)'.
self adjustAllOopsBy: (self startOfMemory).