error check in Get_program_directory() for linux

This commit is contained in:
Thomas Bernard 2019-07-24 02:25:08 +02:00
parent 2892f0330f
commit b5751ebda8
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -127,7 +127,26 @@ char * Get_program_directory(const char * argv0)
program_dir = Extract_path(NULL, path); program_dir = Extract_path(NULL, path);
} }
else else
{
char * current_dir, * tmp;
size_t len;
program_dir = NULL;
GFX2_Log(GFX2_WARNING, "readlink(%s) failed : %s\n", "/proc/self/exe", strerror(errno)); GFX2_Log(GFX2_WARNING, "readlink(%s) failed : %s\n", "/proc/self/exe", strerror(errno));
current_dir = Get_current_directory(NULL, NULL, 0);
if (current_dir != NULL)
{
len = strlen(current_dir) + strlen(argv0) + 2;
tmp = malloc(len);
if (tmp != NULL)
{
snprintf(tmp, len, "%s/%s", current_dir, argv0);
program_dir = Extract_path(NULL, tmp);
free(tmp);
}
free(current_dir);
}
}
} }
else else
program_dir = Extract_path(NULL, argv0); program_dir = Extract_path(NULL, argv0);