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);

Reply via email to