Handle the failure to read from /proc/self/cmdline by printing an error message and fix the -Wsign-compare warning:
In file included from ./util/u_memory.h:39:0, from os/os_process.c:31: os/os_process.c: In function 'os_get_command_line': os/os_process.c:140:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] assert(n < size); ^ ./util/u_debug.h:189:30: note: in definition of macro 'debug_assert' #define debug_assert(expr) ((expr) ? (void)0 : _debug_assert_fail(#expr, __FILE__, __LINE__, __FUNCTION__)) ^~~~ os/os_process.c:140:7: note: in expansion of macro 'assert' assert(n < size); ^~~~~~ gallium/aux/os/ squash v2: - simplify patch (Emil Velikov) - print error message only when compiled in debug mode Signed-off-by: Gert Wollny <gert.wol...@collabora.com> --- src/gallium/auxiliary/os/os_process.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/os/os_process.c b/src/gallium/auxiliary/os/os_process.c index 035bd228e7..ed03b81f85 100644 --- a/src/gallium/auxiliary/os/os_process.c +++ b/src/gallium/auxiliary/os/os_process.c @@ -29,6 +29,7 @@ #include "pipe/p_config.h" #include "os/os_process.h" #include "util/u_memory.h" +#include <strings.h> #if defined(PIPE_SUBSYSTEM_WINDOWS_USER) # include <windows.h> @@ -135,9 +136,18 @@ os_get_command_line(char *cmdline, size_t size) #elif defined(PIPE_OS_LINUX) int f = open("/proc/self/cmdline", O_RDONLY); if (f) { - const int n = read(f, cmdline, size - 1); + const ssize_t n = read(f, cmdline, size - 1); int i; - assert(n < size); + + if (n == -1) { + debug_printf("Error reading from /proc/self/cmdline: %s", + strerror(errno)); + close(f); + cmdline[0] = 0; + return FALSE; + } + + assert((size_t)n < size); // The arguments are separated by '\0' chars. Convert them to spaces. for (i = 0; i < n; i++) { if (cmdline[i] == 0) { -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev