Dev: fix missing JNI check after java call

This commit is contained in:
Andrew Druk 2019-01-21 19:52:34 +02:00
parent 0dd2f9bb4f
commit 51d1f2fae3
1 changed files with 11 additions and 1 deletions

View File

@ -316,13 +316,20 @@ public extension JNICore {
}
private func checkArgument<Result>(args: [jvalue], _ block: (_ argsPtr: UnsafePointer<jvalue>?) -> Result) -> Result {
var locals = [jobject]()
if args.count > 0 {
var args = args
return withUnsafePointer(to: &args[0]) { argsPtr in
defer {
_ = JNI.check(Void.self, &locals)
}
return block(argsPtr)
}
}
else {
defer {
_ = JNI.check(Void.self, &locals)
}
return block(nil)
}
}
@ -353,8 +360,8 @@ public extension JNICore {
}
private func checkArgumentAndWrap<Result>(args: [JNIArgumentProtocol], _ block: (_ argsPtr: UnsafePointer<jvalue>?) -> Result) -> Result {
var locals = [jobject]()
if args.count > 0 {
var locals = [jobject]()
var argsValues = args.map({ $0.value(locals: &locals) })
return withUnsafePointer(to: &argsValues[0]) { argsPtr in
defer {
@ -364,6 +371,9 @@ public extension JNICore {
}
}
else {
defer {
_ = JNI.check(Void.self, &locals)
}
return block(nil)
}
}