Explorar o código

solve issue 1739 (NPE in reloadJoysticks() when joystick lacks buttons) #1740

Björn Hempel %!s(int64=3) %!d(string=hai) anos
pai
achega
72a21b1f9b

+ 11 - 9
jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwJoystickInput.java

@@ -108,15 +108,17 @@ public class GlfwJoystickInput implements JoyInput {
 
                 final ByteBuffer byteBuffer = glfwGetJoystickButtons(i);
 
-                int buttonIndex = 0;
-                while (byteBuffer.hasRemaining()) {
-                    byteBuffer.get();
-
-                    final String logicalId = JoystickCompatibilityMappings.remapButton(joystick.getName(), String.valueOf(buttonIndex));
-                    final JoystickButton button = new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId);
-                    joystick.addButton(button);
-                    joyButtonPressed.put(button, false);
-                    buttonIndex++;
+                if (byteBuffer != null) {
+                    int buttonIndex = 0;
+                    while (byteBuffer.hasRemaining()) {
+                        byteBuffer.get();
+
+                        final String logicalId = JoystickCompatibilityMappings.remapButton(joystick.getName(), String.valueOf(buttonIndex));
+                        final JoystickButton button = new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId);
+                        joystick.addButton(button);
+                        joyButtonPressed.put(button, false);
+                        buttonIndex++;
+                    }
                 }
             }
         }