From 1a688cd058e38dde7b5f1978fe564facd48f22a0 Mon Sep 17 00:00:00 2001 From: Peter Beutner Date: Mon, 6 Aug 2007 15:38:49 +0200 Subject: [PATCH] msvcrt: Fix _makepath(). --- dlls/msvcrt/dir.c | 26 ++++++++++++++------------ dlls/msvcrt/tests/dir.c | 3 +-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 21a31153c8b..8340d28c792 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -853,7 +853,7 @@ VOID CDECL _makepath(char * path, const char * drive, const char *directory, const char * filename, const char * extension) { - char ch; + char *p = path; TRACE("(%s %s %s %s)\n", debugstr_a(drive), debugstr_a(directory), debugstr_a(filename), debugstr_a(extension) ); @@ -861,28 +861,30 @@ VOID CDECL _makepath(char * path, const char * drive, if ( !path ) return; - path[0] = '\0'; if (drive && drive[0]) { - path[0] = drive[0]; - path[1] = ':'; - path[2] = 0; + *p++ = drive[0]; + *p++ = ':'; + *p = 0; } if (directory && directory[0]) { - strcat(path, directory); - ch = path[strlen(path)-1]; - if (ch != '/' && ch != '\\') - strcat(path,"\\"); + strcpy(p, directory); + p += strlen(directory) - 1; + if (*p != '/' && *p != '\\') { + strcat(p, "\\"); + p++; + } + p++; } if (filename && filename[0]) { - strcat(path, filename); + strcpy(p, filename); if (extension && extension[0]) { if ( extension[0] != '.' ) - strcat(path,"."); - strcat(path,extension); + strcat(p,"."); + strcat(p,extension); } } TRACE("returning %s\n",path); diff --git a/dlls/msvcrt/tests/dir.c b/dlls/msvcrt/tests/dir.c index f3c4d08fa6c..6929a76a5eb 100644 --- a/dlls/msvcrt/tests/dir.c +++ b/dlls/msvcrt/tests/dir.c @@ -43,8 +43,7 @@ static void test_makepath(void) /* this works with native and e.g. Freelancer depends on it */ strcpy(buffer, "foo"); _makepath(buffer, NULL, buffer, "dummy.txt", NULL); - todo_wine { ok( strcmp(buffer, "foo\\dummy.txt") == 0, - "unexpected result: %s\n", buffer); } + ok( strcmp(buffer, "foo\\dummy.txt") == 0, "unexpected result: %s\n", buffer); } static void test_fullpath(void)