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.
This commit is contained in:
Brad King 2010-06-25 08:48:59 -04:00
parent da0190a4a7
commit 6fc4cd8680
6 changed files with 11 additions and 10 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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