From 8f938e25ca8b7ce792882f89db5a070d7b31c78e Mon Sep 17 00:00:00 2001 From: MysterD Date: Sun, 7 May 2023 16:00:52 -0700 Subject: [PATCH] Fixed crash in import_texture_*() --- src/pc/gfx/gfx_pc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/pc/gfx/gfx_pc.c b/src/pc/gfx/gfx_pc.c index a6d33ec59..3e6fbb5a2 100644 --- a/src/pc/gfx/gfx_pc.c +++ b/src/pc/gfx/gfx_pc.c @@ -401,12 +401,14 @@ static bool gfx_texture_cache_lookup(int tile, struct TextureHashmapNode **n, co } static void import_texture_rgba32(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint32_t width = rdp.texture_tile.line_size_bytes / 2; uint32_t height = (rdp.loaded_texture[tile].size_bytes / 2) / rdp.texture_tile.line_size_bytes; gfx_rapi->upload_texture(rdp.loaded_texture[tile].addr, width, height); } static void import_texture_rgba16(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[8192]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes / 2; i++) { @@ -428,6 +430,7 @@ static void import_texture_rgba16(int tile) { } static void import_texture_ia4(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[32768]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes * 2; i++) { @@ -451,6 +454,7 @@ static void import_texture_ia4(int tile) { } static void import_texture_ia8(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[16384]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes; i++) { @@ -472,6 +476,7 @@ static void import_texture_ia8(int tile) { } static void import_texture_ia16(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[8192]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes / 2; i++) { @@ -493,6 +498,7 @@ static void import_texture_ia16(int tile) { } static void import_texture_i4(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[32768]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes * 2; i++) { @@ -511,6 +517,7 @@ static void import_texture_i4(int tile) { } static void import_texture_i8(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[16384]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes; i++) { @@ -528,6 +535,7 @@ static void import_texture_i8(int tile) { } static void import_texture_ci4(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[32768]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes * 2; i++) { @@ -551,6 +559,7 @@ static void import_texture_ci4(int tile) { } static void import_texture_ci8(int tile) { + if (!rdp.loaded_texture[tile].addr) { return; } uint8_t rgba32_buf[16384]; for (uint32_t i = 0; i < rdp.loaded_texture[tile].size_bytes; i++) {