From: Ivo Raisr Date: Mon, 20 Feb 2017 08:07:21 +0000 (+0000) Subject: Fix sr_EQ() comparison on Solaris syscall failure X-Git-Tag: svn/VALGRIND_3_13_0~169 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39dcf62ccdc6f393be5de173731bbd24220162ef;p=thirdparty%2Fvalgrind.git 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 --- 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