cmd: Avoid duplicate invocation of strlenW and make code more more resilient in WCMD_copy. (RESEND)
Gerald Pfeifer
gerald at pfeifer.com
Thu Apr 3 00:09:10 CDT 2014
Are there any problems with this patch?
Gerald
---------- Forwarded message ----------
From: Gerald Pfeifer <gerald at pfeifer.com>
To: wine-patches at winehq.org
Date: Sun, 8 Sep 2013 00:43:45 +0200 (CEST)
Subject: cmd: Avoid duplicate invocation of strlenW and make code more more
resilient in WCMD_copy.
GCC warns about destname[strlenW() - 1] since it cannot see that
the string is always non-zero.
In any case, we may want to avoid duplicate invocations of strlenW.
Gerald
---
programs/cmd/builtins.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 64e12a0..ed96912 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -789,6 +789,7 @@ void WCMD_copy(WCHAR * args) {
} else {
WCHAR *filenamepart;
DWORD attributes;
+ size_t len;
WINE_TRACE("Destination supplied, processing to see if file or directory\n");
@@ -798,12 +799,14 @@ void WCMD_copy(WCHAR * args) {
/* If parameter is a directory, ensure it ends in \ */
attributes = GetFileAttributesW(destname);
- if ((destname[strlenW(destname) - 1] == '\\') ||
+ len = strlenW(destname);
+ if ((len && destname[len - 1] == '\\') ||
((attributes != INVALID_FILE_ATTRIBUTES) &&
(attributes & FILE_ATTRIBUTE_DIRECTORY))) {
destisdirectory = TRUE;
- if (!(destname[strlenW(destname) - 1] == '\\')) strcatW(destname, slashW);
+ if (!len || destname[len - 1] != '\\')
+ strcatW(destname, slashW);
WINE_TRACE("Directory, so full name is now '%s'\n", wine_dbgstr_w(destname));
}
}
--
1.8.3.4
More information about the wine-patches
mailing list