From fc19148f6dd60a1d925472cd86cb09ae0abdd35e Mon Sep 17 00:00:00 2001 From: Scott Kostyshak Date: Tue, 20 May 2014 07:46:22 -0400 Subject: [PATCH] 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. --- src/support/filetools.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp index 19d9701464..66d4b22701 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(nRead) < buf.size() - 1) { break; } buf.resize(buf.size() * 2); -- 2.39.2