Browse Source

Fix or cast integer conversions in cmake

These were revealed by GCC's -Wconversion option.  Fix types where it is
easy to do so.  Cast in cases we know the integer will not be truncated.
Brad King 15 years ago
parent
commit
6fc4cd8680

+ 1 - 1
Source/cmELF.cxx

@@ -576,7 +576,7 @@ unsigned int cmELFInternalImpl<Types>::GetDynamicEntryCount()
       return i;
       }
     }
-  return this->DynamicSectionEntries.size();
+  return static_cast<unsigned int>(this->DynamicSectionEntries.size());
 }
 
 //----------------------------------------------------------------------------

+ 3 - 2
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -750,8 +750,9 @@ cmGlobalUnixMakefileGenerator3
                                 cmLocalGenerator::FULL,
                                 cmLocalGenerator::SHELL);
         progCmd << " ";
-        std::vector<int> &progFiles = this->ProgressMap[&t->second].Marks;
-        for (std::vector<int>::iterator i = progFiles.begin();
+        std::vector<unsigned long>& progFiles =
+          this->ProgressMap[&t->second].Marks;
+        for (std::vector<unsigned long>::iterator i = progFiles.begin();
               i != progFiles.end(); ++i)
           {
           progCmd << " " << *i;

+ 1 - 1
Source/cmGlobalUnixMakefileGenerator3.h

@@ -177,7 +177,7 @@ protected:
     TargetProgress(): NumberOfActions(0) {}
     unsigned long NumberOfActions;
     std::string VariableFile;
-    std::vector<int> Marks;
+    std::vector<unsigned long> Marks;
     void WriteProgressVariables(unsigned long total, unsigned long& current);
   };
   struct ProgressMapCompare { bool operator()(cmTarget*,cmTarget*) const; };

+ 1 - 1
Source/cmStringCommand.cxx

@@ -739,7 +739,7 @@ bool cmStringCommand
     alphabet = cmStringCommandDefaultAlphabet;
     }
 
-  double sizeofAlphabet = alphabet.size();
+  double sizeofAlphabet = static_cast<double>(alphabet.size());
   if ( sizeofAlphabet < 1 )
     {
     this->SetError("sub-command RANDOM invoked with bad alphabet.");

+ 3 - 3
Source/cmSystemTools.cxx

@@ -1204,6 +1204,7 @@ bool cmSystemTools::ComputeFileMD5(const char* source, char* md5out)
   // Should be efficient enough on most system:
   const int bufferSize = 4096;
   char buffer[bufferSize];
+  unsigned char const* buffer_uc = reinterpret_cast<unsigned char const*>(buffer);
   // This copy loop is very sensitive on certain platforms with
   // slightly broken stream libraries (like HPUX).  Normally, it is
   // incorrect to not check the error condition on the fin.read()
@@ -1212,10 +1213,9 @@ bool cmSystemTools::ComputeFileMD5(const char* source, char* md5out)
   while(fin)
     {
     fin.read(buffer, bufferSize);
-    if(fin.gcount())
+    if(int gcount = static_cast<int>(fin.gcount()))
       {
-      cmsysMD5_Append(md5, reinterpret_cast<unsigned char const*>(buffer), 
-                      fin.gcount());
+      cmsysMD5_Append(md5, buffer_uc, gcount);
       }
     }
   cmsysMD5_FinalizeHex(md5, md5out);

+ 2 - 2
Source/cm_utf8.c

@@ -50,7 +50,7 @@ const char* cm_utf8_decode_character(const char* first, const char* last,
                                      unsigned int* pc)
 {
   /* Count leading ones in the first byte.  */
-  unsigned char c = *first++;
+  unsigned char c = (unsigned char)*first++;
   unsigned char const ones = cm_utf8_ones[c];
   switch(ones)
     {
@@ -65,7 +65,7 @@ const char* cm_utf8_decode_character(const char* first, const char* last,
   unsigned char left;
   for(left = ones-1; left && first != last; --left)
     {
-    c = *first++;
+    c = (unsigned char)*first++;
     if(cm_utf8_ones[c] != 1)
       {
       return 0;