diff options
-rw-r--r-- | lib/EntoSA/RegionStore.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/EntoSA/RegionStore.cpp b/lib/EntoSA/RegionStore.cpp index 4913d1a389..49795c6892 100644 --- a/lib/EntoSA/RegionStore.cpp +++ b/lib/EntoSA/RegionStore.cpp @@ -817,9 +817,12 @@ SVal RegionStoreManager::evalDerivedToBase(SVal derived, QualType baseType) { assert(baseDecl && "not a CXXRecordDecl?"); - loc::MemRegionVal &derivedRegVal = cast<loc::MemRegionVal>(derived); + loc::MemRegionVal *derivedRegVal = dyn_cast<loc::MemRegionVal>(&derived); + if (!derivedRegVal) + return derived; + const MemRegion *baseReg = - MRMgr.getCXXBaseObjectRegion(baseDecl, derivedRegVal.getRegion()); + MRMgr.getCXXBaseObjectRegion(baseDecl, derivedRegVal->getRegion()); return loc::MemRegionVal(baseReg); } //===----------------------------------------------------------------------===// |