From 39dcf62ccdc6f393be5de173731bbd24220162ef Mon Sep 17 00:00:00 2001 From: Ivo Raisr Date: Mon, 20 Feb 2017 08:07:21 +0000 Subject: [PATCH] Fix sr_EQ() comparison on Solaris syscall failure On rare occasions, garbage is found in sr1._val2 while sr2._val2 contains 0. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16252 --- coregrind/m_libcprint.c | 2 +- include/pub_tool_basics.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coregrind/m_libcprint.c b/coregrind/m_libcprint.c index e3fda00a67..7902ebbb64 100644 --- a/coregrind/m_libcprint.c +++ b/coregrind/m_libcprint.c @@ -1168,7 +1168,7 @@ const HChar *VG_(sr_as_string) ( SysRes sr ) return buf; } -#elif defined(VGO_darwin) || (VGO_solaris) +#elif defined(VGO_darwin) || defined(VGO_solaris) const HChar *VG_(sr_as_string) ( SysRes sr ) { diff --git a/include/pub_tool_basics.h b/include/pub_tool_basics.h index 4ff9415755..6ef37c7bf5 100644 --- a/include/pub_tool_basics.h +++ b/include/pub_tool_basics.h @@ -359,8 +359,8 @@ static inline UWord sr_Err ( SysRes sr ) { static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { /* sysno is ignored for Solaris */ return sr1._val == sr2._val - && sr1._val2 == sr2._val2 - && sr1._isError == sr2._isError; + && sr1._isError == sr2._isError + && (!sr1._isError) ? (sr1._val2 == sr2._val2) : True; } #else -- 2.47.2