Once again I’m struggling with NativeBoost. I’m trying to use 
optCoerceNilToNull with this function:

^self call: #(LGitReturnCodeEnum git_commit_create(
        LGitId * theCommitId, 
        LGitRepository repo,
        String update_ref, 
        LGitSignature * theAuthor,
        LGitSignature * theCommitter,
        String message_encoding,
        String theMessage,
        LGitTree theTree,
        int parent_count, 
        LGitCommit * parentsPointer)) options: #( optCoerceNilToNull )

The last argument can be NULL, per documentation, (no parents).
LGitCommit is a subclass of NBExternalObject and apparently 
NBExternalObjctType>>pushAsPointer: does *not* use the optCoerceNilToNull 
option (the super implementation in NBExternalType>>pushAsPointer: however 
does). The upshot of course is that the call fails with “an instance of 
LGitCommit expected”.

My questions:
- The documentation says:

"#optCoerceNilToNull"
"passing nil as a pointer-type argument, converts it to C NULL “
        
        but apparently this doesn’t apply to every pointer type. Should the 
documentation be updated?
- Why does NBExternlObjectType not use optCoerceNilToNull? I don’t want to use 
tricks to pass null if I don’t have to.
- Related: there are instances where even non-pointer arguments are allowed to 
be NULL. Why does optCoerceNilToNull only work for pointer types?

Igor! Help! :)

Cheers,
Max

Reply via email to