Forráskód Böngészése

handle open_write() correctly on windows

David Rose 23 éve
szülő
commit
92082c21d1
1 módosított fájl, 11 hozzáadás és 0 törlés
  1. 11 0
      dtool/src/dtoolutil/filename.cxx

+ 11 - 0
dtool/src/dtoolutil/filename.cxx

@@ -1204,6 +1204,17 @@ open_write(ofstream &stream) const {
 
   int open_mode = ios::out;
 
+#ifdef WIN32_VC
+  // Windows insists on having this set to prevent the file from being
+  // truncated when we open it.  Makes ios::trunc kind of pointless,
+  // doesn't it?  On the other hand, setting ios::in also seems to
+  // imply ios::nocreate (!), so we should only set this if the file
+  // already exists.
+  if (exists()) {
+    open_mode |= ios::in;
+  }
+#endif
+
 #ifdef HAVE_IOS_BINARY
   // For some reason, some systems (like Irix) don't define
   // ios::binary.