null actions are now handled gracefully instead of segfaulting the JVM
2 files changed, 11 insertions(+), 4 deletions(-)

M src/ninja/scoopta/software/wofij/Wofi.java
M wofi_jni/src/wofi_jni.c
M src/ninja/scoopta/software/wofij/Wofi.java +5 -1
@@ 100,7 100,11 @@ public final class Wofi {
 	
 	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();
 		}

          
M wofi_jni/src/wofi_jni.c +6 -3
@@ 285,8 285,11 @@ struct widget* get_widget(void) {
 
 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);
 }