Skip to content

Commit 3d434e1

Browse files
authored
Add checknull macro
1 parent ef31d84 commit 3d434e1

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/core.jl

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,9 +462,21 @@ javaclassname(class::Symbol) = replace(string(class), "."=>"/")
462462
javaclassname(class::AbstractString) = replace(class, "."=>"/")
463463
javaclassname(::Type{T}) where T <: AbstractVector = JavaCall.signature(T)
464464

465-
function checknull(ptr)
465+
macro checknull(expr, msg="")
466+
if expr isa Expr && expr.head == :call
467+
:( checknull($expr, $msg, $(expr.args[1])) )
468+
else
469+
:( checknull($expr, $msg) )
470+
end
471+
end
472+
473+
function checknull(ptr, msg="Unexpected null pointer from Java Native Interface", jnifun=nothing)
466474
if isnull(ptr) && geterror() === nothing
467-
throw(JavaCallError("Null from Java. Not known how"))
475+
if jnifun === nothing
476+
throw(JavaCallError(msg))
477+
else
478+
throw(JavaCallError("JavaCall.JNI.$jnifun: $msg"))
479+
end
468480
end
469481
ptr
470482
end

0 commit comments

Comments
 (0)