Ver código fonte

BUG: ConfigureFile must read/write in binary mode to avoid windows newline trouble. The problem occurred when configuring a file in cygwin from a path starting with a windows drive letter instead of a posix path.

Brad King 19 anos atrás
pai
commit
7a31bc8521
1 arquivos alterados com 10 adições e 2 exclusões
  1. 10 2
      Source/cmMakefile.cxx

+ 10 - 2
Source/cmMakefile.cxx

@@ -2617,7 +2617,11 @@ int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
     {
     std::string tempOutputFile = soutfile;
     tempOutputFile += ".tmp";
-    std::ofstream fout(tempOutputFile.c_str());
+    std::ofstream fout(tempOutputFile.c_str()
+#if defined(_WIN32) || defined(__CYGWIN__)
+                       , std::ios::out | std::ios::binary
+#endif
+      );
     if(!fout)
       {
       cmSystemTools::Error(
@@ -2626,7 +2630,11 @@ int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
       cmSystemTools::ReportLastSystemError("");
       return 0;
       }
-    std::ifstream fin(sinfile.c_str());
+    std::ifstream fin(sinfile.c_str()
+#if defined(_WIN32) || defined(__CYGWIN__)
+                      , std::ios::in | std::ios::binary
+#endif
+      );
     if(!fin)
       {
       cmSystemTools::Error("Could not open file for read in copy operation ",