diff options
author | tsepez <tsepez@chromium.org> | 2016-05-31 14:22:09 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-31 14:22:09 -0700 |
commit | 29adee77d4a7566bc6832cc825198c0571426163 (patch) | |
tree | e8fd009fe853b4d8aad499d6e92cfff8f7dd6efa /xfa/fxfa/parser | |
parent | fb96900eeea15b252245b0caf4330a5ade369172 (diff) | |
download | pdfium-29adee77d4a7566bc6832cc825198c0571426163.tar.xz |
Replace void* with CFXJSE_HostObect and make wrapped objects inherit from it
This will avoid a re-occurrence of BUG 613607 should someone
again optimize away CXFA_Object's virtual dtor.
Review-Url: https://codereview.chromium.org/2019333006
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/xfa_object.h | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script.h | 4 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script_imp.cpp | 29 |
3 files changed, 18 insertions, 17 deletions
diff --git a/xfa/fxfa/parser/xfa_object.h b/xfa/fxfa/parser/xfa_object.h index 8fc074c08f..17b624fb13 100644 --- a/xfa/fxfa/parser/xfa_object.h +++ b/xfa/fxfa/parser/xfa_object.h @@ -42,7 +42,7 @@ enum XFA_OBJECTTYPE { XFA_NODEFLAG_LayoutGeneratedNode = 0x10000, }; -class CXFA_Object { +class CXFA_Object : public CFXJSE_HostObject { public: CXFA_Object(CXFA_Document* pDocument, uint32_t uFlags); virtual ~CXFA_Object() {} diff --git a/xfa/fxfa/parser/xfa_script.h b/xfa/fxfa/parser/xfa_script.h index 350588f8b5..da348f7a36 100644 --- a/xfa/fxfa/parser/xfa_script.h +++ b/xfa/fxfa/parser/xfa_script.h @@ -48,8 +48,8 @@ class CXFA_ValueArray : public CFX_ArrayTemplate<CFXJSE_Value*> { void GetAttributeObject(CXFA_ObjArray& objArray) { for (int32_t i = 0; i < GetSize(); i++) { - CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(GetAt(i), NULL); - objArray.Add(pObject); + objArray.Add( + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(GetAt(i), nullptr))); } } diff --git a/xfa/fxfa/parser/xfa_script_imp.cpp b/xfa/fxfa/parser/xfa_script_imp.cpp index fb42e802be..eb71097cdf 100644 --- a/xfa/fxfa/parser/xfa_script_imp.cpp +++ b/xfa/fxfa/parser/xfa_script_imp.cpp @@ -146,7 +146,7 @@ void CXFA_ScriptContext::GlobalPropertySetter(CFXJSE_Value* pObject, const CFX_ByteStringC& szPropName, CFXJSE_Value* pValue) { CXFA_Object* lpOrginalNode = - (CXFA_Object*)FXJSE_Value_ToObject(pObject, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pObject, nullptr)); CXFA_Document* pDoc = lpOrginalNode->GetDocument(); CXFA_ScriptContext* lpScriptContext = (CXFA_ScriptContext*)pDoc->GetScriptContext(); @@ -203,7 +203,7 @@ void CXFA_ScriptContext::GlobalPropertyGetter(CFXJSE_Value* pObject, const CFX_ByteStringC& szPropName, CFXJSE_Value* pValue) { CXFA_Object* pOriginalObject = - (CXFA_Object*)FXJSE_Value_ToObject(pObject, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pObject, nullptr)); CXFA_Document* pDoc = pOriginalObject->GetDocument(); CXFA_ScriptContext* lpScriptContext = (CXFA_ScriptContext*)pDoc->GetScriptContext(); @@ -258,7 +258,7 @@ void CXFA_ScriptContext::NormalPropertyGetter(CFXJSE_Value* pOriginalValue, const CFX_ByteStringC& szPropName, CFXJSE_Value* pReturnValue) { CXFA_Object* pOriginalObject = - (CXFA_Object*)FXJSE_Value_ToObject(pOriginalValue, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pOriginalValue, nullptr)); if (!pOriginalObject) { FXJSE_Value_SetUndefined(pReturnValue); return; @@ -304,7 +304,7 @@ void CXFA_ScriptContext::NormalPropertySetter(CFXJSE_Value* pOriginalValue, const CFX_ByteStringC& szPropName, CFXJSE_Value* pReturnValue) { CXFA_Object* pOriginalObject = - (CXFA_Object*)FXJSE_Value_ToObject(pOriginalValue, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pOriginalValue, nullptr)); if (!pOriginalObject) return; @@ -356,7 +356,7 @@ int32_t CXFA_ScriptContext::NormalPropTypeGetter( const CFX_ByteStringC& szPropName, FX_BOOL bQueryIn) { CXFA_Object* pObject = - (CXFA_Object*)FXJSE_Value_ToObject(pOriginalValue, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pOriginalValue, nullptr)); if (!pObject) return FXJSE_ClassPropType_None; @@ -379,7 +379,7 @@ int32_t CXFA_ScriptContext::GlobalPropTypeGetter( const CFX_ByteStringC& szPropName, FX_BOOL bQueryIn) { CXFA_Object* pObject = - (CXFA_Object*)FXJSE_Value_ToObject(pOriginalValue, nullptr); + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pOriginalValue, nullptr)); if (!pObject) return FXJSE_ClassPropType_None; @@ -396,7 +396,8 @@ int32_t CXFA_ScriptContext::GlobalPropTypeGetter( void CXFA_ScriptContext::NormalMethodCall(CFXJSE_Value* pThis, const CFX_ByteStringC& szFuncName, CFXJSE_Arguments& args) { - CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(pThis, nullptr); + CXFA_Object* pObject = + static_cast<CXFA_Object*>(FXJSE_Value_ToObject(pThis, nullptr)); if (!pObject) return; @@ -441,11 +442,11 @@ CFXJSE_Context* CXFA_ScriptContext::CreateVariablesContext( } CXFA_Object* CXFA_ScriptContext::GetVariablesThis(CXFA_Object* pObject, FX_BOOL bScriptNode) { - if (pObject->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) { - return bScriptNode ? ((CXFA_ThisProxy*)pObject)->GetScriptNode() - : ((CXFA_ThisProxy*)pObject)->GetThisNode(); - } - return pObject; + if (pObject->GetObjectType() != XFA_OBJECTTYPE_VariablesThis) + return pObject; + + CXFA_ThisProxy* pProxy = static_cast<CXFA_ThisProxy*>(pObject); + return bScriptNode ? pProxy->GetScriptNode() : pProxy->GetThisNode(); } FX_BOOL CXFA_ScriptContext::RunVariablesScript(CXFA_Node* pScriptNode) { @@ -652,8 +653,8 @@ int32_t CXFA_ScriptContext::ResolveObjects(CXFA_Object* refNode, (rndFind.m_Nodes[0]->*(rndFind.m_pScriptAttribute->lpfnCallback))( pValue.get(), FALSE, (XFA_ATTRIBUTE)rndFind.m_pScriptAttribute->eAttribute); - rndFind.m_Nodes.SetAt( - 0, (CXFA_Object*)FXJSE_Value_ToObject(pValue.get(), nullptr)); + rndFind.m_Nodes.SetAt(0, static_cast<CXFA_Object*>(FXJSE_Value_ToObject( + pValue.get(), nullptr))); } int32_t iSize = m_upObjectArray.GetSize(); if (iSize) { |