summaryrefslogtreecommitdiff
path: root/src/files.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/files.c')
-rw-r--r--src/files.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/files.c b/src/files.c
index 042441b..b25ddbe 100644
--- a/src/files.c
+++ b/src/files.c
@@ -44,15 +44,19 @@ static char *FixFilename(const char *filename, const char *prefix, int force)
{
char *f, *ptr;
int flen;
+ int plen;
- flen = strlen(filename) + strlen(prefix) + 2;
+ plen = strlen(prefix) + 1;
+ flen = strlen(filename) + plen + 1;
f = (char *)malloc(flen);
strcpy(f, prefix);
strcat(f, DIR_SEPARATOR);
strcat(f, filename);
- ptr = f;
+ /* only the filename part needs to be modified */
+ ptr = &f[plen+1];
+
while (*ptr) {
if ((*ptr == '/') || (*ptr == '\\') || (*ptr == ':')) {
*ptr = DIR_SEPARATOR[0];
@@ -60,8 +64,9 @@ static char *FixFilename(const char *filename, const char *prefix, int force)
*ptr = 0;
break;
} else {
- if (force)
+ if (force) {
*ptr = tolower(*ptr);
+ }
}
ptr++;
}