Marcel Taeumel uploaded a new version of FFI-Kernel to project FFI:
http://source.squeak.org/FFI/FFI-Kernel-mt.166.mcz==================== Summary ====================
Name: FFI-Kernel-mt.166
Author: mt
Time: 22 May 2021, 3:19:41.704855 pm
UUID: cecd9ff4-64c2-2343-a278-d7263d721b90
Ancestors: FFI-Kernel-mt.165
Some bug fixes around void and void*
=============== Diff against FFI-Kernel-mt.165 ===============
Item was changed:
----- Method: ExternalData>>arrayType (in category 'accessing - types') -----
arrayType
+ "Answer this container's array type or 'nil' if unknown. Supports"
- "Answer this container's array type or 'nil' if unknown."
| arrayType |
+ ^ (arrayType := self containerType) asNonPointerType isVoid
- ^ (arrayType := self containerType) isVoid
ifFalse: [arrayType]!
Item was changed:
----- Method: ExternalData>>setType: (in category 'private') -----
setType: externalType
"Private. Set the type used to derive content and container types. If you want to change the content type later, use #setContentType:."
externalType = ExternalType string ifTrue: [
^ self setType: externalType asNonPointerType].
+ externalType isVoid ifTrue: [
+ ^ self setType: externalType asPointerType].
+
+ (externalType isArrayType or: [externalType asNonPointerType isVoid])
+ ifTrue: [type := externalType "array type or void*"]
- (externalType isArrayType or: [externalType isVoid])
- ifTrue: [type := externalType]
ifFalse: [type := (externalType asArrayType: nil)].
contentType := nil.!
Item was changed:
----- Method: ExternalData>>writer (in category 'accessing') -----
writer
"Overwritten to preserve type."
+ ^ (self isNull or: [handle isExternalAddress])
- ^ handle isExternalAddress
ifTrue: [self]
ifFalse: [self class fromHandle: (ByteArrayReadWriter on: handle) type: type]!
Item was added:
+ ----- Method: VoidReadWriteSend>>handle:atIndex: (in category 'evaluating') -----
+ handle: handle atIndex: byteOffset
+ "no accessors for void"
+ self shouldNotImplement.!
Item was added:
+ ----- Method: VoidReadWriteSend>>handle:atIndex:put: (in category 'evaluating') -----
+ handle: handle atIndex: byteOffset put: value
+ "no accessors for void"
+ self shouldNotImplement.!