diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index a519ff01cd..c5a9a089f7 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -1009,13 +1009,17 @@ static void rcheevos_award_achievement(rcheevos_locals_t *locals, /* Take a screenshot of the achievement. */ if (settings && settings->bools.cheevos_auto_screenshot) { - char shotname[8192]; + size_t shotname_len = sizeof(char) * 8192; + char *shotname = (char*)malloc(shotname_len); - snprintf(shotname, sizeof(shotname), "%s/%s-cheevo-%u", + if (!shotname) + return; + + snprintf(shotname, shotname_len, "%s/%s-cheevo-%u", settings->paths.directory_screenshot, path_basename(path_get(RARCH_PATH_BASENAME)), cheevo->id); - shotname[sizeof(shotname) - 1] = '\0'; + shotname[shotname_len - 1] = '\0'; if (take_screenshot(settings->paths.directory_screenshot, shotname, true, @@ -1028,6 +1032,7 @@ static void rcheevos_award_achievement(rcheevos_locals_t *locals, CHEEVOS_LOG( RCHEEVOS_TAG "Failed to capture screenshot for achievement %u\n", cheevo->id); + free(shotname); } } #endif