Refactor away strcpy_alloc_force

This commit is contained in:
twinaphex 2021-02-22 06:25:25 +01:00
parent f54679417c
commit 80e90e532a

View File

@ -9992,24 +9992,15 @@ static void retroarch_unset_runtime_shader_preset(
static char *strcpy_alloc(const char *src) static char *strcpy_alloc(const char *src)
{ {
char *result = NULL; char *result = NULL;
size_t len = src ? strlen(src) : 0; size_t len = strlen(src);
if (len == 0) if (len == 0)
return NULL; return NULL;
result = (char*)malloc(len + 1); result = (char*)malloc(len + 1);
strcpy(result, src); strcpy_literal(result, src);
return result; return result;
} }
static char *strcpy_alloc_force(const char *src)
{
char *result = strcpy_alloc(src);
if (!result)
return (char*)calloc(1, 1);
return result;
}
#endif #endif
#endif #endif
@ -18680,7 +18671,7 @@ static void strcat_alloc(char **dst, const char *s)
if (!src) if (!src)
{ {
src = strcpy_alloc_force(s); src = (s) ? strcpy_alloc(s) : (char*)calloc(1,1);
*dst = src; *dst = src;
return; return;
} }
@ -18762,40 +18753,43 @@ static void clear_controller_port_map(struct rarch_state *p_rarch)
static char *get_temp_directory_alloc(const char *override_dir) static char *get_temp_directory_alloc(const char *override_dir)
{ {
const char *src = NULL; const char *src = NULL;
char *path = NULL; char *path = NULL;
#ifdef _WIN32 #ifdef _WIN32
#ifdef LEGACY_WIN32 #ifdef LEGACY_WIN32
DWORD path_length = GetTempPath(0, NULL) + 1; DWORD plen = GetTempPath(0, NULL) + 1;
if (!(path = (char*)malloc(path_length * sizeof(char)))) if (!(path = (char*)malloc(plen * sizeof(char))))
return NULL; return NULL;
path[path_length - 1] = 0; path[plen - 1] = 0;
GetTempPath(path_length, path); GetTempPath(plen, path);
#else #else
DWORD path_length = GetTempPathW(0, NULL) + 1; DWORD plen = GetTempPathW(0, NULL) + 1;
wchar_t *wide_str = (wchar_t*)malloc(path_length * sizeof(wchar_t)); wchar_t *wide_str = (wchar_t*)malloc(plen * sizeof(wchar_t));
if (!wide_str) if (!wide_str)
return NULL; return NULL;
wide_str[path_length - 1] = 0; wide_str[plen - 1] = 0;
GetTempPathW(path_length, wide_str); GetTempPathW(plen, wide_str);
path = utf16_to_utf8_string_alloc(wide_str); path = utf16_to_utf8_string_alloc(wide_str);
free(wide_str); free(wide_str);
#endif #endif
#else #else
#if defined ANDROID #if defined ANDROID
src = override_dir; src = override_dir;
#else #else
if (getenv("TMPDIR")) {
src = getenv("TMPDIR"); char *tmpdir = getenv("TMPDIR");
else if (tmpdir)
src = "/tmp"; src = tmpdir;
else
src = "/tmp";
}
#endif #endif
path = strcpy_alloc_force(src); path = (src) ? strcpy_alloc(src) : (char*)calloc(1,1);
#endif #endif
return path; return path;
} }
@ -18809,8 +18803,8 @@ static bool write_file_with_random_name(char **temp_dll_path,
const char *prefix = "tmp"; const char *prefix = "tmp";
time_t time_value = time(NULL); time_t time_value = time(NULL);
unsigned number_value = (unsigned)time_value; unsigned number_value = (unsigned)time_value;
char *ext = strcpy_alloc_force( const char *src = path_get_extension(*temp_dll_path);
path_get_extension(*temp_dll_path)); char *ext = (src) ? strcpy_alloc(src) : (char*)calloc(1,1);
int ext_len = (int)strlen(ext); int ext_len = (int)strlen(ext);
if (ext_len > 0) if (ext_len > 0)