diff --git a/src/native/linux/org_lwjgl_input_Cursor.cpp b/src/native/linux/org_lwjgl_input_Cursor.cpp index 0d30ba2e..902c13be 100644 --- a/src/native/linux/org_lwjgl_input_Cursor.cpp +++ b/src/native/linux/org_lwjgl_input_Cursor.cpp @@ -60,8 +60,11 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Cursor_nCreateCursor XcursorPixel *pixels = (XcursorPixel *)env->GetDirectBufferAddress(image_buffer) + images_offset; int stride = width*height; XcursorImages *cursor_images = XcursorImagesCreate(num_images); - if (cursor_images == NULL) + if (cursor_images == NULL) { + decDisplay(); throwException(env, "Could not allocate cursor."); + return; + } cursor_images->nimage = num_images; for (int i = 0; i < num_images; i++) { XcursorImage *cursor_image = XcursorImageCreate(width, height); diff --git a/src/native/linux/org_lwjgl_input_Mouse.cpp b/src/native/linux/org_lwjgl_input_Mouse.cpp index e512ef94..835e0b6c 100644 --- a/src/native/linux/org_lwjgl_input_Mouse.cpp +++ b/src/native/linux/org_lwjgl_input_Mouse.cpp @@ -249,6 +249,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nCreate for (i = 0; i < NUM_BUTTONS; i++) buttons[i] = 0; if (!blankCursor()) { + decDisplay(); throwException(env, "Could not create blank cursor"); return; } diff --git a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp index 9a7d1461..1a0e0cb2 100644 --- a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp +++ b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp @@ -216,6 +216,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Pbuffer_nCreate(JNIEnv *env, jclass None, None}; if (env->GetDirectBufferCapacity(handle_buffer) < sizeof(PbufferInfo)) { + decDisplay(); throwException(env, "Handle buffer not large enough"); return; }