Skip to content

Commit e27f5bc

Browse files
committed
fix: java glue probably
1 parent e72495b commit e27f5bc

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/ffi/java/mod.rs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub(crate) fn jvm() -> std::sync::Arc<jni::JavaVM> {
2626

2727
/// Called upon initialisation of the JVM.
2828
#[allow(non_snake_case)]
29-
#[no_mangle]
29+
#[unsafe(no_mangle)]
3030
pub extern "system" fn JNI_OnLoad(vm: jni::JavaVM, _: *mut std::ffi::c_void) -> jni::sys::jint {
3131
unsafe { JVM = Some(std::sync::Arc::new(vm)) };
3232
jni::sys::JNI_VERSION_1_1
@@ -320,23 +320,25 @@ impl<'j> jni_toolbox::FromJava<'j> for crate::api::Config {
320320
config: Self::From,
321321
) -> Result<Self, jni::errors::Error> {
322322
let username = {
323-
let jfield = env
323+
let jfield: jni::objects::JString<'j> = env
324324
.get_field(&config, "username", "Ljava/lang/String;")?
325-
.l()?;
325+
.l()?
326+
.into();
326327
if jfield.is_null() {
327328
return Err(jni::errors::Error::NullPtr("Username can never be null!"));
328329
}
329-
unsafe { env.get_string_unchecked(&jfield.into()) }?.into()
330+
unsafe { env.get_string_unchecked(&jfield) }?.into()
330331
};
331332

332333
let password = {
333-
let jfield = env
334+
let jfield: jni::objects::JString<'j> = env
334335
.get_field(&config, "password", "Ljava/lang/String;")?
335-
.l()?;
336+
.l()?
337+
.into();
336338
if jfield.is_null() {
337339
return Err(jni::errors::Error::NullPtr("Password can never be null!"));
338340
}
339-
unsafe { env.get_string_unchecked(&jfield.into()) }?.into()
341+
unsafe { env.get_string_unchecked(&jfield) }?.into()
340342
};
341343

342344
let host = {
@@ -346,8 +348,9 @@ impl<'j> jni_toolbox::FromJava<'j> for crate::api::Config {
346348
if env.call_method(&jfield, "isPresent", "()Z", &[])?.z()? {
347349
let field = env
348350
.call_method(&jfield, "get", "()Ljava/lang/Object;", &[])?
349-
.l()?;
350-
Some(unsafe { env.get_string_unchecked(&field.into()) }?.into())
351+
.l()?
352+
.into();
353+
Some(unsafe { env.get_string_unchecked(&field) }?.into())
351354
} else {
352355
None
353356
}
@@ -412,13 +415,14 @@ impl<'j> jni_toolbox::FromJava<'j> for crate::api::Selection {
412415
let end_col = env.get_field(&cursor, "endCol", "I")?.i()?;
413416

414417
let buffer = {
415-
let jfield = env
418+
let jfield: jni::objects::JString<'j> = env
416419
.get_field(&cursor, "buffer", "Ljava/lang/String;")?
417-
.l()?;
420+
.l()?
421+
.into();
418422
if jfield.is_null() {
419423
return Err(jni::errors::Error::NullPtr("Buffer can never be null!"));
420424
}
421-
unsafe { env.get_string_unchecked(&jfield.into()) }?.into()
425+
unsafe { env.get_string_unchecked(&jfield) }?.into()
422426
};
423427

424428
Ok(Self {
@@ -447,13 +451,14 @@ impl<'j> jni_toolbox::FromJava<'j> for crate::api::TextChange {
447451
.clamp(0, u32::MAX.into()) as u32;
448452

449453
let content = {
450-
let jfield = env
454+
let jfield: jni::objects::JString<'j> = env
451455
.get_field(&change, "content", "Ljava/lang/String;")?
452-
.l()?;
456+
.l()?
457+
.into();
453458
if jfield.is_null() {
454459
return Err(jni::errors::Error::NullPtr("Content can never be null!"));
455460
}
456-
unsafe { env.get_string_unchecked(&jfield.into()) }?.into()
461+
unsafe { env.get_string_unchecked(&jfield) }?.into()
457462
};
458463

459464
Ok(Self {

0 commit comments

Comments
 (0)