Skip to content

Commit 51d1f2f

Browse files
committed
Dev: fix missing JNI check after java call
1 parent 0dd2f9b commit 51d1f2f

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

Sources/JNICore+JavaCoder.swift

+11-1
Original file line numberDiff line numberDiff line change
@@ -316,13 +316,20 @@ public extension JNICore {
316316
}
317317

318318
private func checkArgument<Result>(args: [jvalue], _ block: (_ argsPtr: UnsafePointer<jvalue>?) -> Result) -> Result {
319+
var locals = [jobject]()
319320
if args.count > 0 {
320321
var args = args
321322
return withUnsafePointer(to: &args[0]) { argsPtr in
323+
defer {
324+
_ = JNI.check(Void.self, &locals)
325+
}
322326
return block(argsPtr)
323327
}
324328
}
325329
else {
330+
defer {
331+
_ = JNI.check(Void.self, &locals)
332+
}
326333
return block(nil)
327334
}
328335
}
@@ -353,8 +360,8 @@ public extension JNICore {
353360
}
354361

355362
private func checkArgumentAndWrap<Result>(args: [JNIArgumentProtocol], _ block: (_ argsPtr: UnsafePointer<jvalue>?) -> Result) -> Result {
363+
var locals = [jobject]()
356364
if args.count > 0 {
357-
var locals = [jobject]()
358365
var argsValues = args.map({ $0.value(locals: &locals) })
359366
return withUnsafePointer(to: &argsValues[0]) { argsPtr in
360367
defer {
@@ -364,6 +371,9 @@ public extension JNICore {
364371
}
365372
}
366373
else {
374+
defer {
375+
_ = JNI.check(Void.self, &locals)
376+
}
367377
return block(nil)
368378
}
369379
}

0 commit comments

Comments
 (0)