ソースを参照

Merge branch 'upstream-KWSys' into update-kwsys

# By KWSys Upstream
* upstream-KWSys:
  KWSys 2022-01-11 (15b0b0c4)
Brad King 3 年 前
コミット
f52dac56a0

+ 3 - 4
Source/kwsys/SystemInformation.cxx

@@ -1265,11 +1265,10 @@ public:
   }
 
 private:
-  void* GetRealAddress() const
+  size_t GetRealAddress() const
   {
-    return reinterpret_cast<void*>(
-      static_cast<char*>(this->Address) -
-      static_cast<char*>(this->BinaryBaseAddress));
+    return static_cast<size_t>(static_cast<char*>(this->Address) -
+                               static_cast<char*>(this->BinaryBaseAddress));
   }
 
   std::string GetFileName(const std::string& path) const;

+ 4 - 4
Source/kwsys/SystemTools.cxx

@@ -4250,9 +4250,9 @@ std::string SystemTools::MakeCidentifier(const std::string& s)
 // Convenience function around std::getline which removes a trailing carriage
 // return and can truncate the buffer as needed.  Returns true
 // if any data were read before the end-of-file was reached.
-bool SystemTools::GetLineFromStream(std::istream& is, std::string& line,
-                                    bool* has_newline /* = 0 */,
-                                    long sizeLimit /* = -1 */)
+bool SystemTools::GetLineFromStream(
+  std::istream& is, std::string& line, bool* has_newline /* = 0 */,
+  std::string::size_type sizeLimit /* = std::string::npos */)
 {
   // Start with an empty line.
   line = "";
@@ -4277,7 +4277,7 @@ bool SystemTools::GetLineFromStream(std::istream& is, std::string& line,
     }
 
     // if we read too much then truncate the buffer
-    if (sizeLimit >= 0 && line.size() >= static_cast<size_t>(sizeLimit)) {
+    if (sizeLimit != std::string::npos && line.size() > sizeLimit) {
       line.resize(sizeLimit);
     }
   }

+ 3 - 3
Source/kwsys/SystemTools.hxx.in

@@ -523,9 +523,9 @@ public:
    * end-of-file was reached. If the has_newline argument is specified, it will
    * be true when the line read had a newline character.
    */
-  static bool GetLineFromStream(std::istream& istr, std::string& line,
-                                bool* has_newline = nullptr,
-                                long sizeLimit = -1);
+  static bool GetLineFromStream(
+    std::istream& istr, std::string& line, bool* has_newline = nullptr,
+    std::string::size_type sizeLimit = std::string::npos);
 
   /**
    * Get the parent directory of the directory or file

+ 13 - 8
Source/kwsys/testSystemTools.cxx

@@ -936,7 +936,8 @@ static bool CheckGetLineFromStream()
   bool result;
 
   file.seekg(0, std::ios::beg);
-  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
+  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
+                                                 std::string::npos);
   if (!result || line.size() != 5) {
     std::cerr << "First line does not have five characters: " << line.size()
               << std::endl;
@@ -944,7 +945,8 @@ static bool CheckGetLineFromStream()
   }
 
   file.seekg(0, std::ios::beg);
-  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
+  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
+                                                 std::string::npos);
   if (!result || line.size() != 5) {
     std::cerr << "First line does not have five characters after rewind: "
               << line.size() << std::endl;
@@ -953,10 +955,10 @@ static bool CheckGetLineFromStream()
 
   bool ret = true;
 
-  for (size_t size = 1; size <= 5; ++size) {
+  for (std::string::size_type size = 1; size <= 5; ++size) {
     file.seekg(0, std::ios::beg);
-    result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
-                                                   static_cast<long>(size));
+    result =
+      kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, size);
     if (!result || line.size() != size) {
       std::cerr << "Should have read " << size << " characters but got "
                 << line.size() << std::endl;
@@ -999,7 +1001,8 @@ static bool CheckGetLineFromStreamLongLine()
   bool result;
 
   // Read first line.
-  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
+  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
+                                                 std::string::npos);
   if (!result || line != firstLine) {
     std::cerr << "First line does not match, expected " << firstLine.size()
               << " characters, got " << line.size() << std::endl;
@@ -1012,7 +1015,8 @@ static bool CheckGetLineFromStreamLongLine()
 
   // Read empty line.
   has_newline = false;
-  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
+  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
+                                                 std::string::npos);
   if (!result || !line.empty()) {
     std::cerr << "Expected successful read with an empty line, got "
               << line.size() << " characters" << std::endl;
@@ -1025,7 +1029,8 @@ static bool CheckGetLineFromStreamLongLine()
 
   // Read second line.
   has_newline = false;
-  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
+  result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
+                                                 std::string::npos);
   if (!result || line != secondLine) {
     std::cerr << "Second line does not match, expected " << secondLine.size()
               << " characters, got " << line.size() << std::endl;