Fix a GCC warning: comparing signed vs. unsigned

This also changes the type of an int to an ssize_t.

nRead is initialized as an ssize_t because it could
be negative. It is cast to a size_t for comparison
to the size of a vector, but only after we check
that nRead is not negative.
This commit is contained in:
Scott Kostyshak 2014-05-20 07:46:22 -04:00
parent 275b7af75e
commit fc19148f6d

View File

@ -840,7 +840,7 @@ bool readLink(FileName const & file, FileName & link)
string const encoded = file.toFilesystemEncoding();
#ifdef HAVE_DEF_PATH_MAX
char linkbuffer[PATH_MAX + 1];
int const nRead = ::readlink(encoded.c_str(),
ssize_t const nRead = ::readlink(encoded.c_str(),
linkbuffer, sizeof(linkbuffer) - 1);
if (nRead <= 0)
return false;
@ -854,7 +854,7 @@ bool readLink(FileName const & file, FileName & link)
if (nRead < 0) {
return false;
}
if (nRead < buf.size() - 1) {
if (static_cast<size_t>(nRead) < buf.size() - 1) {
break;
}
buf.resize(buf.size() * 2);