summaryrefslogtreecommitdiffhomepage
path: root/src/core.c
diff options
context:
space:
mode:
authorRay <[email protected]>2021-01-20 17:07:06 +0100
committerRay <[email protected]>2021-01-20 17:07:06 +0100
commitd20efde49dab27151acfdc83ab62f78ffc9b0f6e (patch)
tree9cd7c51dbb6f85a609475dbab09c615bb1130c36 /src/core.c
parent01b7509a396f4c060bb256ce2c5908d4ed9758ad (diff)
parent5e6eb0b847d5c27a76e03c60d3db6d10d8788456 (diff)
downloadraylib-d20efde49dab27151acfdc83ab62f78ffc9b0f6e.tar.gz
raylib-d20efde49dab27151acfdc83ab62f78ffc9b0f6e.zip
Merge branch 'master' of https://github.com/raysan5/raylib
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/core.c b/src/core.c
index d7bff21f..4162e893 100644
--- a/src/core.c
+++ b/src/core.c
@@ -2353,7 +2353,7 @@ const char *GetFileName(const char *filePath)
const char *fileName = NULL;
if (filePath != NULL) fileName = strprbrk(filePath, "\\/");
- if (!fileName || (fileName == filePath)) return filePath;
+ if (!fileName) return filePath;
return fileName + 1;
}
@@ -2399,9 +2399,9 @@ const char *GetDirectoryPath(const char *filePath)
static char dirPath[MAX_FILEPATH_LENGTH];
memset(dirPath, 0, MAX_FILEPATH_LENGTH);
- // In case provided path does not contains a root drive letter (C:\, D:\),
+ // In case provided path does not contain a root drive letter (C:\, D:\) nor leading path separator (\, /),
// we add the current directory path to dirPath
- if (filePath[1] != ':')
+ if (filePath[1] != ':' && filePath[0] != '\\' && filePath[0] != '/')
{
// For security, we set starting path to current directory,
// obtained path will be concated to this
@@ -2412,9 +2412,18 @@ const char *GetDirectoryPath(const char *filePath)
lastSlash = strprbrk(filePath, "\\/");
if (lastSlash)
{
- // NOTE: Be careful, strncpy() is not safe, it does not care about '\0'
- memcpy(dirPath + ((filePath[1] != ':')? 2 : 0), filePath, strlen(filePath) - (strlen(lastSlash) - 1));
- dirPath[strlen(filePath) - strlen(lastSlash) + ((filePath[1] != ':')? 2 : 0)] = '\0'; // Add '\0' manually
+ if (lastSlash == filePath)
+ {
+ // The last and only slash is the leading one: path is in a root directory
+ dirPath[0] = filePath[0];
+ dirPath[1] = '\0';
+ }
+ else
+ {
+ // NOTE: Be careful, strncpy() is not safe, it does not care about '\0'
+ memcpy(dirPath + (filePath[1] != ':' && filePath[0] != '\\' && filePath[0] != '/' ? 2 : 0), filePath, strlen(filePath) - (strlen(lastSlash) - 1));
+ dirPath[strlen(filePath) - strlen(lastSlash) + (filePath[1] != ':' && filePath[0] != '\\' && filePath[0] != '/' ? 2 : 0)] = '\0'; // Add '\0' manually
+ }
}
return dirPath;