aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/mingw.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/win32/mingw.c b/win32/mingw.c
index 7ce60139e..fa68ea608 100644
--- a/win32/mingw.c
+++ b/win32/mingw.c
@@ -1196,7 +1196,7 @@ int symlink(const char *target, const char *linkpath)
1196 DWORD flag = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE; 1196 DWORD flag = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
1197 struct stat st; 1197 struct stat st;
1198 DECLARE_PROC_ADDR(BOOLEAN, CreateSymbolicLinkA, LPCSTR, LPCSTR, DWORD); 1198 DECLARE_PROC_ADDR(BOOLEAN, CreateSymbolicLinkA, LPCSTR, LPCSTR, DWORD);
1199 char *relative = NULL; 1199 char *targ, *relative = NULL;
1200 1200
1201 if (!INIT_PROC_ADDR(kernel32.dll, CreateSymbolicLinkA)) { 1201 if (!INIT_PROC_ADDR(kernel32.dll, CreateSymbolicLinkA)) {
1202 return -1; 1202 return -1;
@@ -1213,8 +1213,11 @@ int symlink(const char *target, const char *linkpath)
1213 flag |= SYMBOLIC_LINK_FLAG_DIRECTORY; 1213 flag |= SYMBOLIC_LINK_FLAG_DIRECTORY;
1214 free(relative); 1214 free(relative);
1215 1215
1216 targ = auto_string(strdup(target));
1217 slash_to_bs(targ);
1218
1216 retry: 1219 retry:
1217 if (!CreateSymbolicLinkA(linkpath, target, flag)) { 1220 if (!CreateSymbolicLinkA(linkpath, targ, flag)) {
1218 /* Old Windows versions see 'UNPRIVILEGED_CREATE' as an invalid 1221 /* Old Windows versions see 'UNPRIVILEGED_CREATE' as an invalid
1219 * parameter. Retry without it. */ 1222 * parameter. Retry without it. */
1220 if ((flag & SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE) && 1223 if ((flag & SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE) &&