From 08d759c9a44ff2c08ce18f18d038ff8436d6cb78 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Sun, 4 Jan 2015 11:30:11 +0000 Subject: [PATCH] TyEnt::TyStOrUn::fieldRs is never NULL as VG_(newXA) always returns something != NULL. Testing fieldRs for NULL-ness was confusing static analysis. It usually takes such tests as evidence that the pointer can in fact be NULL and may report false positives as a consequence. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14845 --- coregrind/m_debuginfo/tytypes.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/coregrind/m_debuginfo/tytypes.c b/coregrind/m_debuginfo/tytypes.c index 3c91a76bb2..1ee62f960d 100644 --- a/coregrind/m_debuginfo/tytypes.c +++ b/coregrind/m_debuginfo/tytypes.c @@ -158,8 +158,7 @@ void ML_(pp_TyEnt)( const TyEnt* te ) te->Te.TyStOrUn.fieldRs, te->Te.TyStOrUn.name ? te->Te.TyStOrUn.name : "" ); - if (te->Te.TyStOrUn.fieldRs) - pp_XArray_of_cuOffs( te->Te.TyStOrUn.fieldRs ); + pp_XArray_of_cuOffs( te->Te.TyStOrUn.fieldRs ); } else { VG_(printf)("Te_TyStOrUn(INCOMPLETE,\"%s\")", te->Te.TyStOrUn.name); @@ -619,7 +618,7 @@ void ML_(TyEnt__make_EMPTY) ( TyEnt* te ) break; case Te_TyStOrUn: if (te->Te.TyStOrUn.name) ML_(dinfo_free)(te->Te.TyStOrUn.name); - if (te->Te.TyStOrUn.fieldRs) VG_(deleteXA)(te->Te.TyStOrUn.fieldRs); + VG_(deleteXA)(te->Te.TyStOrUn.fieldRs); break; case Te_TyEnum: if (te->Te.TyEnum.name) ML_(dinfo_free)(te->Te.TyEnum.name); @@ -784,7 +783,7 @@ XArray* /*HChar*/ ML_(describe_type)( /*OUT*/PtrdiffT* residual_offset, PtrdiffT offMin = 0, offMax1 = 0; if (!ty->Te.TyStOrUn.isStruct) goto done; fieldRs = ty->Te.TyStOrUn.fieldRs; - if (((!fieldRs) || VG_(sizeXA)(fieldRs) == 0) + if (VG_(sizeXA)(fieldRs) == 0 && (ty->Te.TyStOrUn.typeR == 0)) goto done; for (i = 0; i < VG_(sizeXA)( fieldRs ); i++ ) { fieldR = *(UWord*)VG_(indexXA)( fieldRs, i ); -- 2.47.3