commit fc19148f6dd60a1d925472cd86cb09ae0abdd35e
Author: Scott Kostyshak <[email protected]>
Date: Tue May 20 07:46:22 2014 -0400
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.
diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp
index 19d9701..66d4b22 100644
--- a/src/support/filetools.cpp
+++ b/src/support/filetools.cpp
@@ -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);