From 184a9517a619c0052aabd8ad6ab00ed0d2607e97 Mon Sep 17 00:00:00 2001 From: sanine Date: Mon, 13 Mar 2023 12:29:18 -0500 Subject: fix null pointer errors --- src/glfw/setup.h | 4 ++++ src/glfw/window.c | 8 +++++++- src/import/import.c | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/glfw/setup.h b/src/glfw/setup.h index b867627..3e5b482 100644 --- a/src/glfw/setup.h +++ b/src/glfw/setup.h @@ -416,6 +416,10 @@ H_GLFW_FUNCTIONS X("PLATFORM_ERROR", GLFW_PLATFORM_ERROR) \ X("FORMAT_UNAVAILABLE", GLFW_FORMAT_UNAVAILABLE) \ X("NO_WINDOW_CONTEXT", GLFW_NO_WINDOW_CONTEXT) \ + X("PRESS", GLFW_PRESS) \ + X("RELEASE", GLFW_RELEASE) \ + X("REPEAT", GLFW_REPEAT) \ + #endif diff --git a/src/glfw/window.c b/src/glfw/window.c index 0199fb0..5922dde 100644 --- a/src/glfw/window.c +++ b/src/glfw/window.c @@ -88,6 +88,12 @@ int glfwCreateWindow_bind(lua_State *L) GLFWwindow ** window = create_window(L); *window = glfwCreateWindow(width, height, title, *monitor, *share); + if (*window == NULL) { + int code; + const char *err; + code = glfwGetError(&err); + return luaL_error(L, "failed to create window: %s [code %d]", err, code); + } configure_window(window); return 1; } @@ -113,7 +119,7 @@ int glfwWindowShouldClose_bind(lua_State *L) int glfwSetWindowShouldClose_bind(lua_State *L) { GLFWwindow ** window = luaL_checkudata(L, 1, glfw_window_tname); - int value = luaL_checkinteger(L, 2); + int value = lua_toboolean(L, 2); glfwSetWindowShouldClose(*window, value); return 0; } diff --git a/src/import/import.c b/src/import/import.c index e2fc250..66bd541 100644 --- a/src/import/import.c +++ b/src/import/import.c @@ -9,7 +9,11 @@ void read_file(void *ctx, const char *filename, int is_mtl, const char *obj_filename, char **buf, size_t *len) { + lua_State *L = ctx; FILE *f = fopen(filename, "rb"); + if (f == NULL) { + luaL_error(L, "failed to open file \"%s\"", filename); + } fseek(f, 0, SEEK_END); *len = ftell(f); fseek(f, 0, SEEK_SET); -- cgit v1.2.1