From 1e93efc0aa8dd1666f485663199cd0dbf8d10f1c Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 10 Sep 2023 22:06:56 +0300 Subject: [PATCH] libretro: allow unlimited cheat length notaz/pcsx_rearmed#306 --- frontend/libretro.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/frontend/libretro.c b/frontend/libretro.c index b1af9f15..f275ca32 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -991,12 +991,13 @@ void retro_cheat_reset(void) void retro_cheat_set(unsigned index, bool enabled, const char *code) { - char buf[256]; - int ret; + int ret = -1; + char *buf; - // cheat funcs are destructive, need a copy.. - strncpy(buf, code, sizeof(buf)); - buf[sizeof(buf) - 1] = 0; + // cheat funcs are destructive, need a copy... + buf = strdup(code); + if (buf == NULL) + goto finish; //Prepare buffered cheat for PCSX's AddCheat fucntion. int cursor = 0; @@ -1022,10 +1023,12 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code) else ret = AddCheat("", buf); +finish: if (ret != 0) SysPrintf("Failed to set cheat %#u\n", index); else if (index < NumCheats) Cheats[index].Enabled = enabled; + free(buf); } // just in case, maybe a win-rt port in the future? -- 2.39.2