зеркало из https://github.com/github/ruby.git
* win32/win32.c (wrename): use MoveFileExW instead of MoveFileW,
because the latter fails on cross device file move of some environments. fix [ruby-core:53492] [Bug #8109] reported by mitchellh (Mitchell Hashimoto) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
99155e20a0
Коммит
35cc29c872
|
@ -1,3 +1,11 @@
|
|||
Sat Mar 30 03:49:21 2013 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* win32/win32.c (wrename): use MoveFileExW instead of MoveFileW,
|
||||
because the latter fails on cross device file move of some
|
||||
environments.
|
||||
fix [ruby-core:53492] [Bug #8109]
|
||||
reported by mitchellh (Mitchell Hashimoto)
|
||||
|
||||
Fri Mar 29 22:09:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* thread.c (rb_mutex_synchronize_m): yield no block params. patch by
|
||||
|
|
|
@ -4344,18 +4344,9 @@ wrename(const WCHAR *oldpath, const WCHAR *newpath)
|
|||
if (newatts != -1 && newatts & FILE_ATTRIBUTE_READONLY)
|
||||
SetFileAttributesW(newpath, newatts & ~ FILE_ATTRIBUTE_READONLY);
|
||||
|
||||
if (!MoveFileW(oldpath, newpath))
|
||||
if (!MoveFileExW(oldpath, newpath, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
|
||||
res = -1;
|
||||
|
||||
if (res) {
|
||||
switch (GetLastError()) {
|
||||
case ERROR_ALREADY_EXISTS:
|
||||
case ERROR_FILE_EXISTS:
|
||||
if (MoveFileExW(oldpath, newpath, MOVEFILE_REPLACE_EXISTING))
|
||||
res = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (res)
|
||||
errno = map_errno(GetLastError());
|
||||
else
|
||||
|
|
Загрузка…
Ссылка в новой задаче