[ros-diffs] [fireball] 29629: Dmitry Gorbachev <hs26332 at mail.cnt.ru> - NtSetInformationFile() could be done before asynchronously called NtWriteFile is completed. Fix this by sending the synchronous flag. - Check return status of the second NtSetInformationFile() call. See issue #2071 for more details.

fireball at svn.reactos.org fireball at svn.reactos.org
Tue Oct 16 16:59:09 CEST 2007


Author: fireball
Date: Tue Oct 16 18:59:09 2007
New Revision: 29629

URL: http://svn.reactos.org/svn/reactos?rev=29629&view=rev
Log:
Dmitry Gorbachev <hs26332 at mail.cnt.ru>
- NtSetInformationFile() could be done before asynchronously called NtWriteFile is completed. Fix this by sending the synchronous flag.
- Check return status of the second NtSetInformationFile() call.
See issue #2071 for more details.

Modified:
    trunk/reactos/base/setup/usetup/filesup.c

Modified: trunk/reactos/base/setup/usetup/filesup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/filesup.c?rev=29629&r1=29628&r2=29629&view=diff
==============================================================================
--- trunk/reactos/base/setup/usetup/filesup.c (original)
+++ trunk/reactos/base/setup/usetup/filesup.c Tue Oct 16 18:59:09 2007
@@ -204,7 +204,9 @@
 			FILE_ATTRIBUTE_NORMAL,
 			0,
 			FILE_OVERWRITE_IF,
-			FILE_NO_INTERMEDIATE_BUFFERING | FILE_SEQUENTIAL_ONLY,
+			FILE_NO_INTERMEDIATE_BUFFERING |
+			FILE_SEQUENTIAL_ONLY |
+			FILE_SYNCHRONOUS_IO_NONALERT,
 			NULL,
 			0);
   if(!NT_SUCCESS(Status))
@@ -243,11 +245,17 @@
     }
 
   /* shorten the file back to it's real size after completing the write */
-  NtSetInformationFile(FileHandleDest,
+  Status = NtSetInformationFile(FileHandleDest,
 		       &IoStatusBlock,
 		       &FileStandard.EndOfFile,
 		       sizeof(FILE_END_OF_FILE_INFORMATION),
 		       FileEndOfFileInformation);
+
+  if(!NT_SUCCESS(Status))
+    {
+      DPRINT1("NtSetInformationFile failed: %x\n", Status);
+    }
+
  closedest:
   NtClose(FileHandleDest);
  unmapsrcsec:




More information about the Ros-diffs mailing list