summaryrefslogtreecommitdiff
path: root/xfa/fde/css/cfde_cssstylesheet_unittest.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2017-02-27 17:08:28 -0800
committerChromium commit bot <commit-bot@chromium.org>2017-02-28 13:58:23 +0000
commita11ac1bedef8c7a55b7e35ec89f5bdcbfcdc5025 (patch)
tree1b9fcddfa49697f90a5090bbc701a60639b05ee0 /xfa/fde/css/cfde_cssstylesheet_unittest.cpp
parent8f2fa901ed692f95a134b2bed6a0af3ec14e06df (diff)
downloadpdfium-a11ac1bedef8c7a55b7e35ec89f5bdcbfcdc5025.tar.xz
Avoid crash above CFWL_ListItem::GetText()
The issue at hand is caused by a raw pointer rather than a retained pointer in InheritedData::m_pFontFamily. But the larger issue is that it's bad to Get() raw pointers from these, especially when its so cheap to pass them by const reference. One reason to Get() a raw pointer is to aid in down-casts, so add a helper to CFX_RetainPtr to give us downcasted retained pointers. BUG=pdfium:665 Change-Id: Ic8624af09664ff603de2e1fda8dbde0cf889f80d Reviewed-on: https://pdfium-review.googlesource.com/2871 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fde/css/cfde_cssstylesheet_unittest.cpp')
-rw-r--r--xfa/fde/css/cfde_cssstylesheet_unittest.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/xfa/fde/css/cfde_cssstylesheet_unittest.cpp b/xfa/fde/css/cfde_cssstylesheet_unittest.cpp
index c6886428ab..fa73a7a9ba 100644
--- a/xfa/fde/css/cfde_cssstylesheet_unittest.cpp
+++ b/xfa/fde/css/cfde_cssstylesheet_unittest.cpp
@@ -51,19 +51,19 @@ class CFDE_CSSStyleSheetTest : public testing::Test {
ASSERT(decl_);
bool important;
- CFDE_CSSValue* v = decl_->GetProperty(prop, important);
+ CFX_RetainPtr<CFDE_CSSValue> v = decl_->GetProperty(prop, &important);
EXPECT_EQ(v->GetType(), FDE_CSSPrimitiveType::Number);
- EXPECT_EQ(static_cast<CFDE_CSSNumberValue*>(v)->Kind(), type);
- EXPECT_EQ(static_cast<CFDE_CSSNumberValue*>(v)->Value(), val);
+ EXPECT_EQ(v.As<CFDE_CSSNumberValue>()->Kind(), type);
+ EXPECT_EQ(v.As<CFDE_CSSNumberValue>()->Value(), val);
}
void VerifyEnum(FDE_CSSProperty prop, FDE_CSSPropertyValue val) {
ASSERT(decl_);
bool important;
- CFDE_CSSValue* v = decl_->GetProperty(prop, important);
+ CFX_RetainPtr<CFDE_CSSValue> v = decl_->GetProperty(prop, &important);
EXPECT_EQ(v->GetType(), FDE_CSSPrimitiveType::Enum);
- EXPECT_EQ(static_cast<CFDE_CSSEnumValue*>(v)->Value(), val);
+ EXPECT_EQ(v.As<CFDE_CSSEnumValue>()->Value(), val);
}
void VerifyList(FDE_CSSProperty prop,
@@ -71,14 +71,14 @@ class CFDE_CSSStyleSheetTest : public testing::Test {
ASSERT(decl_);
bool important;
- CFDE_CSSValue* v = decl_->GetProperty(prop, important);
- CFDE_CSSValueList* list = static_cast<CFDE_CSSValueList*>(v);
+ CFX_RetainPtr<CFDE_CSSValueList> list =
+ decl_->GetProperty(prop, &important).As<CFDE_CSSValueList>();
EXPECT_EQ(list->CountValues(), pdfium::CollectionSize<int32_t>(values));
for (size_t i = 0; i < values.size(); i++) {
- CFDE_CSSValue* val = list->GetValue(i);
+ CFX_RetainPtr<CFDE_CSSValue> val = list->GetValue(i);
EXPECT_EQ(val->GetType(), FDE_CSSPrimitiveType::Enum);
- EXPECT_EQ(static_cast<CFDE_CSSEnumValue*>(val)->Value(), values[i]);
+ EXPECT_EQ(val.As<CFDE_CSSEnumValue>()->Value(), values[i]);
}
}