better error handling in Extract_path()
This commit is contained in:
parent
01c67739d1
commit
0eb715bd17
17
src/io.c
17
src/io.c
@ -354,20 +354,31 @@ char * Extract_path(char *dest, const char *source)
|
|||||||
char * path;
|
char * path;
|
||||||
|
|
||||||
path = Realpath(source, dest);
|
path = Realpath(source, dest);
|
||||||
|
if (path == NULL)
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "Realpath(\"%s\", %p) failed !\n", source, dest);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
position = Find_last_separator(path);
|
position = Find_last_separator(path);
|
||||||
if (position)
|
if (position)
|
||||||
position[1] = '\0';
|
position[1] = '\0';
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
size_t len = strlen(path);
|
||||||
if (dest != NULL)
|
if (dest != NULL)
|
||||||
strcat(dest, PATH_SEPARATOR);
|
strcpy(path + len, PATH_SEPARATOR);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char * tmp = realloc(path, strlen(path) + strlen(PATH_SEPARATOR) + 1);
|
char * tmp = realloc(path, len + strlen(PATH_SEPARATOR) + 1);
|
||||||
if (tmp != NULL)
|
if (tmp != NULL)
|
||||||
{
|
{
|
||||||
path = tmp;
|
path = tmp;
|
||||||
strcat(path, PATH_SEPARATOR);
|
strcpy(path + len, PATH_SEPARATOR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GFX2_Log(GFX2_ERROR, "Extract_path(): Failed to realloc %lu bytes\n",
|
||||||
|
(unsigned long)(len + strlen(PATH_SEPARATOR) + 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user