]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix sr_EQ() comparison on Solaris syscall failure
authorIvo Raisr <ivosh@ivosh.net>
Mon, 20 Feb 2017 08:07:21 +0000 (08:07 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Mon, 20 Feb 2017 08:07:21 +0000 (08:07 +0000)
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
include/pub_tool_basics.h

index e3fda00a67dcbc5fd5ea77fa339ee4475853459a..7902ebbb64e3a6554cbdba93c3f353b84cff2ca4 100644 (file)
@@ -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 )
 {
index 4ff9415755a68155d5b7ffbee577ee6c649d3c03..6ef37c7bf5f3bb82d89517a6bf505dde014d37ff 100644 (file)
@@ -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