From: Pierre Joye Date: Thu, 4 Sep 2008 08:03:31 +0000 (+0000) Subject: - #45985, touch on opened file raises a warning X-Git-Tag: BEFORE_HEAD_NS_CHANGE~483 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c0c6854c50da2a489373f4f0d4c9d6b104b0d259;p=php - #45985, touch on opened file raises a warning --- diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index 2083fff00f..516ecbdf6a 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -1032,8 +1032,14 @@ static int win32_utime(const char *filename, struct utimbuf *buf) /* {{{ */ BOOL f; HANDLE hFile; - hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); + hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, + OPEN_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS, NULL); + + /* OPEN_ALWAYS mode sets the last error to ERROR_ALREADY_EXISTS but + the CreateFile operation succeeds */ + if (GetLastError() == ERROR_ALREADY_EXISTS) { + SetLastError(0); + } if ( hFile == INVALID_HANDLE_VALUE ) { return -1; diff --git a/ext/standard/tests/file/bug45985.phpt b/ext/standard/tests/file/bug45985.phpt new file mode 100644 index 0000000000..1b98da21aa --- /dev/null +++ b/ext/standard/tests/file/bug45985.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #35740 (touch() opened file raises a warning) +--FILE-- + +--EXPECT-- +ok