Skip to content

Commit

Permalink
N3DS: Use asprintf instead of snprintf.
Browse files Browse the repository at this point in the history
  • Loading branch information
FtZPetruska authored and slouken committed Oct 10, 2022
1 parent 6552753 commit 2b2693a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
9 changes: 7 additions & 2 deletions src/file/n3ds/SDL_rwopsromfs.c
Expand Up @@ -20,6 +20,7 @@
*/

#include "SDL_rwopsromfs.h"
#include "SDL_error.h"

/* Nintendo 3DS applications may embed resources in the executable. The
resources are stored in a special read-only partition prefixed with
Expand All @@ -30,7 +31,7 @@ FILE *
N3DS_FileOpen(const char *file, const char *mode)
{
FILE *fp = NULL;
char romfs_path[4096];
char *romfs_path;

/* romfs are read-only */
if (SDL_strchr(mode, 'r') == NULL) {
Expand All @@ -43,13 +44,17 @@ N3DS_FileOpen(const char *file, const char *mode)
return fopen(file, mode);
}

SDL_snprintf(romfs_path, 4096, "romfs:/%s", file);
if (SDL_asprintf(&romfs_path, "romfs:/%s", file) < 0) {
SDL_OutOfMemory();
return NULL;
}

fp = fopen(romfs_path, mode);
if (fp == NULL) {
fp = fopen(file, mode);
}

SDL_free(romfs_path);
return fp;
}

Expand Down
13 changes: 9 additions & 4 deletions src/filesystem/n3ds/SDL_sysfilesystem.c
Expand Up @@ -52,6 +52,10 @@ SDL_GetPrefPath(const char *org, const char *app)
}

pref_path = MakePrefPath(app);
if (pref_path == NULL) {
return NULL;
}

if (CreatePrefPathDir(pref_path) < 0) {
SDL_free(pref_path);
return NULL;
Expand All @@ -63,10 +67,11 @@ SDL_GetPrefPath(const char *org, const char *app)
SDL_FORCE_INLINE char *
MakePrefPath(const char *app)
{
static const char *FMT = "/3ds/%s/";
size_t length = SDL_snprintf(NULL, 0, FMT, app) + 1;
char *pref_path = (char *) SDL_calloc(length, sizeof(char));
SDL_snprintf(pref_path, length, FMT, app);
char *pref_path;
if (SDL_asprintf(&pref_path, "/3ds/%s/", app) < 0) {
SDL_OutOfMemory();
return NULL;
}
return pref_path;
}

Expand Down

0 comments on commit 2b2693a

Please sign in to comment.