# HG changeset patch # User Scoopta # Date 1657091406 25200 # Wed Jul 06 00:10:06 2022 -0700 # Node ID d6fa320a38703f1cdbd052e1135efe306ffd817e # Parent 03f031d1d83464486984375065ecf9b28ad035a5 null actions are now handled gracefully instead of segfaulting the JVM diff --git a/src/ninja/scoopta/software/wofij/Wofi.java b/src/ninja/scoopta/software/wofij/Wofi.java --- a/src/ninja/scoopta/software/wofij/Wofi.java +++ b/src/ninja/scoopta/software/wofij/Wofi.java @@ -100,7 +100,11 @@ private static final void exec(byte[] cmd) { try { - impl.exec(new String(cmd)); + if(cmd == null) { + impl.exec(null); + } else { + impl.exec(new String(cmd)); + } } catch(Exception e) { e.printStackTrace(); } diff --git a/wofi_jni/src/wofi_jni.c b/wofi_jni/src/wofi_jni.c --- a/wofi_jni/src/wofi_jni.c +++ b/wofi_jni/src/wofi_jni.c @@ -285,8 +285,11 @@ void exec(const char* cmd) { jmethodID method = (*gtk_env)->GetStaticMethodID(gtk_env, wofi, "exec", "([B)V"); - size_t cmd_l = strlen(cmd); - jbyteArray arr = (*gtk_env)->NewByteArray(gtk_env, cmd_l); - (*gtk_env)->SetByteArrayRegion(gtk_env, arr, 0, cmd_l, (jbyte*) cmd); + jbyteArray arr = NULL; + if(cmd != NULL) { + size_t cmd_l = strlen(cmd); + arr = (*gtk_env)->NewByteArray(gtk_env, cmd_l); + (*gtk_env)->SetByteArrayRegion(gtk_env, arr, 0, cmd_l, (jbyte*) cmd); + } (*gtk_env)->CallStaticVoidMethod(gtk_env, wofi, method, arr); }