diff --git a/source/font.c b/source/font.c index be75d45..935aa64 100644 --- a/source/font.c +++ b/source/font.c @@ -91,7 +91,7 @@ static int font_object_width(lua_State *L) { int size = luaL_optinteger(L, 3, 9); // Wide caracters support. (wchar = UTF32 on 3DS.) - wchar_t wtext[len]; + wchar_t wtext[len+1]; len = mbstowcs(wtext, text, len); *(wtext+len) = 0x0; // text end diff --git a/source/fs.c b/source/fs.c index ea6231e..1b0bef1 100644 --- a/source/fs.c +++ b/source/fs.c @@ -20,6 +20,8 @@ void load_lzlib(lua_State *L); static int fs_list(lua_State *L) { const char *path = luaL_checkstring(L, 1); + if (strncmp(path, "sdmc:", 5) == 0) path += 5; // Ignore sdmc: prefix + lua_newtable(L); int i = 1; // table index @@ -36,7 +38,7 @@ static int fs_list(lua_State *L) { if (!entriesRead) break; - uint8_t name[256]; // utf8 file name + uint8_t name[0x106+1]; // utf8 file name size_t size = utf16_to_utf8(name, buffer.name, 0x106); *(name+size) = 0x0; // mark text end diff --git a/source/gfx.c b/source/gfx.c index c43be37..b984027 100644 --- a/source/gfx.c +++ b/source/gfx.c @@ -276,7 +276,7 @@ static int gfx_text(lua_State *L) { if (font->font == NULL) luaL_error(L, "The font object was unloaded"); // Wide caracters support. (wchar = UTF32 on 3DS.) - wchar_t wtext[len]; + wchar_t wtext[len+1]; len = mbstowcs(wtext, text, len); *(wtext+len) = 0x0; // text end @@ -316,7 +316,7 @@ static int gfx_wrappedText(lua_State *L) { // Wide caracters support. (wchar = UTF32 on 3DS.) // Disabled as sftd_draw_wtext_wrap() doesn't exist. - /*wchar_t wtext[len]; + /*wchar_t wtext[len+1]; len = mbstowcs(wtext, text, len); *(wtext+len) = 0x0; // text end */