diff --git a/lib/zip_source_file.h b/lib/zip_source_file.h
index 31edd4a..43a4645 100644
--- a/lib/zip_source_file.h
+++ b/lib/zip_source_file.h
@@ -82,7 +82,7 @@
     void (*rollback_write)(zip_source_file_context_t *ctx);
     bool (*seek)(zip_source_file_context_t *ctx, void *f, zip_int64_t offset, int whence);
     bool (*stat)(zip_source_file_context_t *ctx, zip_source_file_stat_t *st);
-    char *(*string_duplicate)(const char *);
+    char *(*string_duplicate)(zip_source_file_context_t *ctx, const char *);
     zip_int64_t (*tell)(zip_source_file_context_t *ctx, void *f);
     zip_int64_t (*write)(zip_source_file_context_t *ctx, const void *data, zip_uint64_t len);
 };
diff --git a/lib/zip_source_file_stdio_write.c b/lib/zip_source_file_stdio_write.c
index 704dcb2..30054c4 100644
--- a/lib/zip_source_file_stdio_write.c
+++ b/lib/zip_source_file_stdio_write.c
@@ -58,6 +58,7 @@
 static bool _zip_stdio_op_open(zip_source_file_context_t *ctx);
 static zip_int64_t _zip_stdio_op_remove(zip_source_file_context_t *ctx);
 static void _zip_stdio_op_rollback_write(zip_source_file_context_t *ctx);
+static char *_zip_stdio_op_strdup(zip_source_file_context_t *ctx, const char *string);
 static zip_int64_t _zip_stdio_op_write(zip_source_file_context_t *ctx, const void *data, zip_uint64_t len);
 
 /* clang-format off */
@@ -76,7 +77,7 @@
     _zip_stdio_op_rollback_write,
     _zip_stdio_op_seek,
     _zip_stdio_op_stat,
-    strdup,
+    _zip_stdio_op_strdup,
     _zip_stdio_op_tell,
     _zip_stdio_op_write
 };
@@ -287,6 +288,12 @@
     (void)remove(ctx->tmpname);
 }
 
+static char *
+_zip_stdio_op_strdup(zip_source_file_context_t *ctx, const char *string) {
+    return strdup(string);
+}
+
+
 static zip_int64_t
 _zip_stdio_op_write(zip_source_file_context_t *ctx, const void *data, zip_uint64_t len) {
     size_t ret;
diff --git a/lib/zip_source_file_win32.h b/lib/zip_source_file_win32.h
index da0ccd7..c844bf3 100644
--- a/lib/zip_source_file_win32.h
+++ b/lib/zip_source_file_win32.h
@@ -48,12 +48,12 @@
 #include "zip_source_file.h"
 
 struct zip_source_file_win32_write_operations {
-    char *(*allocate_tempname)(const char *name, size_t extra_chars);
+    char *(*allocate_tempname)(const char *name, size_t extra_chars, size_t *lengthp);
     HANDLE (*create_file)(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
     bool (*delete_file)(const char *name);
     DWORD (*get_file_attributes)(const char *name);
     void (*make_tempname)(char *buf, size_t len, const char *name, int i);
-    bool (*move_file)(const char *from, const char *to, DWORD flags);
+    bool (*move_file)(const char *from, const char *to);
     bool (*set_file_attributes)(const char *name, DWORD attributes);
     char *(*string_duplicate)(const char *string);
 };
diff --git a/lib/zip_source_file_win32_ansi.c b/lib/zip_source_file_win32_ansi.c
index 55b3f93..74cb594 100644
--- a/lib/zip_source_file_win32_ansi.c
+++ b/lib/zip_source_file_win32_ansi.c
@@ -33,7 +33,7 @@
 
 #include "zip_source_file_win32.h"
 
-static char *ansi_allocate_tempname(const char *name, size_t extra_chars);
+static char *ansi_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp);
 static void ansi_make_tempname(char *buf, size_t len, const char *name, int i);
 
 zip_source_file_win32_write_operations_t ops_ansi = {
@@ -42,7 +42,7 @@
     DeleteFileA,
     GetFileAttributesA,
     ansi_make_tempname,
-    MoveFileA,
+    MoveFileExA,
     SetFileAttributesA,
     strdup
 };
@@ -68,8 +68,9 @@
 
 
 static char *
-ansi_allocate_tempname(const char *name, size_t extra_chars) {
-    return (char *)malloc(strlen(name) + extra_chars);
+ansi_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp) {
+    *lengthp = strlen(name) + extra_chars;
+    return (char *)malloc(*lengthp);
 }
 
 
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index 7327f9f..7b57970 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -33,7 +33,7 @@
 
 #include "zip_source_file_win32.h"
 
-static char *utf16_allocate_tempname(const char *name, size_t extra_chars);
+static char *utf16_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp);
 static HANDLE utf16_create_file(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
 static bool utf16_delete_file(const char *name);
 static DWORD utf16_get_file_attributes(const char *name);
@@ -74,8 +74,9 @@
 
 
 static char *
-utf16_allocate_tempname(const char *name, size_t extra_chars) {
-    return (char *)malloc((wcslen((const wchar_t *)name) + extra_chars) * sizeof(wchar_t));
+utf16_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp) {
+    *lengthp = wcslen((const wchar_t *)name) + extra_chars;
+    return (char *)malloc(*lengthp * sizeof(wchar_t));
 }
 
 
@@ -116,7 +117,7 @@
 
 static
 bool utf16_move_file(const char *from, const char *to, DWORD flags) {
-    return MoveFileW((const wchar_t *)from, (const wchar_t *)to, flags);
+    return MoveFileExW((const wchar_t *)from, (const wchar_t *)to, flags);
 }
 
 
diff --git a/lib/zip_source_file_win32_write.c b/lib/zip_source_file_win32_write.c
index 1d37239..5de6ed4 100644
--- a/lib/zip_source_file_win32_write.c
+++ b/lib/zip_source_file_win32_write.c
@@ -43,7 +43,7 @@
 static char *_zip_win32_write_strdup(const char *string);
 
 static HANDLE win32_write_open(zip_source_file_context_t *ctx, const char *name, bool temporary, PSECURITY_ATTRIBUTES security_attributes);
-¬
+
 /* clang-format off */
 zip_source_file_operations_t zip_source_file_win32_write_operations = {
     _zip_win32_op_close,
@@ -204,7 +204,7 @@
 
 
 static char *
-_zip_win32_write_strdup(const char *string) {
+_zip_win32_write_strdup(zip_source_file_context_t *ctx, const char *string) {
     zip_source_file_win32_write_operations_t *write_ops = (zip_source_file_win32_write_operations_t *)ctx->ops_userdata;
 
     return write_ops->string_duplicate(string);
