aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortakase1121 <20792268+takase1121@users.noreply.github.com>2022-06-15 23:23:13 +0800
committertakase1121 <20792268+takase1121@users.noreply.github.com>2022-06-15 23:23:13 +0800
commit7ecc17409450a429eeb97fd2db4c9c657f5d84af (patch)
treeca37902868a98b4851234bbb6d27743f48d9e3cb /src
parent2d412ef64a76c1ba6f41786577061f5fd320e217 (diff)
downloadlite-xl-7ecc17409450a429eeb97fd2db4c9c657f5d84af.tar.gz
lite-xl-7ecc17409450a429eeb97fd2db4c9c657f5d84af.zip
fix memory leak and wrong check in font_retrieve
Diffstat (limited to 'src')
-rw-r--r--src/api/renderer.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/api/renderer.c b/src/api/renderer.c
index 3ab33b1a..d4df58e3 100644
--- a/src/api/renderer.c
+++ b/src/api/renderer.c
@@ -60,16 +60,16 @@ static int f_font_load(lua_State *L) {
static bool font_retrieve(lua_State* L, RenFont** fonts, int idx) {
memset(fonts, 0, sizeof(RenFont*)*FONT_FALLBACK_MAX);
- if (lua_type(L, 1) != LUA_TTABLE) {
+ if (lua_type(L, idx) != LUA_TTABLE) {
fonts[0] = *(RenFont**)luaL_checkudata(L, idx, API_TYPE_FONT);
return false;
}
- int i = 0;
- do {
+ int len = luaL_len(L, idx); len = len > FONT_FALLBACK_MAX ? FONT_FALLBACK_MAX : len;
+ for (int i = 0; i < len; i++) {
lua_rawgeti(L, idx, i+1);
- fonts[i] = !lua_isnil(L, -1) ? *(RenFont**)luaL_checkudata(L, -1, API_TYPE_FONT) : NULL;
+ fonts[i] = *(RenFont**) luaL_checkudata(L, -1, API_TYPE_FONT);
lua_pop(L, 1);
- } while (fonts[i] && i++ < FONT_FALLBACK_MAX);
+ }
return true;
}