| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| index bd8b157bfa9590a8a095f8782dd958e333b70d51..6c93bcb39fd45f3401931b738274eb24fdda9abe 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| @@ -7,9 +7,6 @@
|
| #include "../../../include/fpdfapi/fpdf_parser.h"
|
| void CPDF_Object::Release()
|
| {
|
| - if (this == NULL) {
|
| - return;
|
| - }
|
| if (m_ObjNum) {
|
| return;
|
| }
|
| @@ -39,9 +36,6 @@ void CPDF_Object::Destroy()
|
| }
|
| CFX_ByteString CPDF_Object::GetString() const
|
| {
|
| - if (this == NULL) {
|
| - return CFX_ByteString();
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_BOOLEAN:
|
| return ((CPDF_Boolean*)this)->m_bValue ? "true" : "false";
|
| @@ -67,9 +61,6 @@ CFX_ByteString CPDF_Object::GetString() const
|
| }
|
| CFX_ByteStringC CPDF_Object::GetConstString() const
|
| {
|
| - if (this == NULL) {
|
| - return CFX_ByteStringC();
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_STRING:
|
| return CFX_ByteStringC((FX_LPCBYTE)((CPDF_String*)this)->m_String, ((CPDF_String*)this)->m_String.GetLength());
|
| @@ -91,9 +82,6 @@ CFX_ByteStringC CPDF_Object::GetConstString() const
|
| }
|
| FX_FLOAT CPDF_Object::GetNumber() const
|
| {
|
| - if (this == NULL) {
|
| - return 0;
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_NUMBER:
|
| return ((CPDF_Number*)this)->GetNumber();
|
| @@ -117,9 +105,6 @@ FX_FLOAT CPDF_Object::GetNumber16() const
|
| }
|
| int CPDF_Object::GetInteger() const
|
| {
|
| - if (this == NULL) {
|
| - return 0;
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_BOOLEAN:
|
| return ((CPDF_Boolean*)this)->m_bValue;
|
| @@ -143,9 +128,6 @@ int CPDF_Object::GetInteger() const
|
| }
|
| CPDF_Dictionary* CPDF_Object::GetDict() const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_DICTIONARY:
|
| return (CPDF_Dictionary*)this;
|
| @@ -167,13 +149,10 @@ CPDF_Dictionary* CPDF_Object::GetDict() const
|
| }
|
| CPDF_Array* CPDF_Object::GetArray() const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| - if (m_Type == PDFOBJ_ARRAY) {
|
| + if (m_Type == PDFOBJ_ARRAY)
|
| return (CPDF_Array*)this;
|
| - }
|
| - return NULL;
|
| + else
|
| + return NULL;
|
| }
|
| void CPDF_Object::SetString(const CFX_ByteString& str)
|
| {
|
| @@ -207,11 +186,11 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const
|
| if (this == pOther) {
|
| return TRUE;
|
| }
|
| - if (this == NULL || pOther == NULL) {
|
| + if (pOther == NULL) {
|
| return FALSE;
|
| }
|
| if (pOther->m_Type != m_Type) {
|
| - if (m_Type == PDFOBJ_REFERENCE) {
|
| + if (m_Type == PDFOBJ_REFERENCE && GetDirect()) {
|
| return GetDirect()->IsIdentical(pOther);
|
| } else if (pOther->m_Type == PDFOBJ_REFERENCE) {
|
| return IsIdentical(pOther->GetDirect());
|
| @@ -242,9 +221,6 @@ FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const
|
| }
|
| CPDF_Object* CPDF_Object::GetDirect() const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| if (m_Type != PDFOBJ_REFERENCE) {
|
| return (CPDF_Object*)this;
|
| }
|
| @@ -261,9 +237,6 @@ CPDF_Object* CPDF_Object::Clone(FX_BOOL bDirect) const
|
| }
|
| CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visited) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| switch (m_Type) {
|
| case PDFOBJ_BOOLEAN:
|
| return FX_NEW CPDF_Boolean(((CPDF_Boolean*)this)->m_bValue);
|
| @@ -303,7 +276,11 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visite
|
| CPDF_StreamAcc acc;
|
| acc.LoadAllData(pThis, TRUE);
|
| FX_DWORD streamSize = acc.GetSize();
|
| - CPDF_Stream* pObj = FX_NEW CPDF_Stream(acc.DetachData(), streamSize, (CPDF_Dictionary*)((CPDF_Object*)pThis->GetDict())->CloneInternal(bDirect, visited));
|
| + CPDF_Stream* pObj;
|
| + if (pThis->GetDict())
|
| + pObj = FX_NEW CPDF_Stream(acc.DetachData(), streamSize, (CPDF_Dictionary*)((CPDF_Object*)pThis->GetDict())->CloneInternal(bDirect, visited));
|
| + else
|
| + pObj = FX_NEW CPDF_Stream(acc.DetachData(), streamSize, NULL);
|
| return pObj;
|
| }
|
| case PDFOBJ_REFERENCE: {
|
| @@ -311,7 +288,11 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visite
|
| FX_DWORD obj_num = pRef->m_RefObjNum;
|
| if (bDirect && !visited->GetValueAt((void*)(FX_UINTPTR)obj_num)) {
|
| visited->SetAt((void*)(FX_UINTPTR)obj_num, (void*)1);
|
| - CPDF_Object* ret = pRef->GetDirect()->CloneInternal(TRUE, visited);
|
| + CPDF_Object* ret;
|
| + if (pRef->GetDirect())
|
| + ret = pRef->GetDirect()->CloneInternal(TRUE, visited);
|
| + else
|
| + ret = NULL;
|
| return ret;
|
| } else {
|
| return FX_NEW CPDF_Reference(pRef->m_pObjList, obj_num);
|
| @@ -322,9 +303,6 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect, CFX_MapPtrToPtr* visite
|
| }
|
| CPDF_Object* CPDF_Object::CloneRef(CPDF_IndirectObjects* pDoc) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| if (m_ObjNum) {
|
| return FX_NEW CPDF_Reference(pDoc, m_ObjNum);
|
| }
|
| @@ -332,9 +310,6 @@ CPDF_Object* CPDF_Object::CloneRef(CPDF_IndirectObjects* pDoc) const
|
| }
|
| CFX_WideString CPDF_Object::GetUnicodeText(CFX_CharMap* pCharMap) const
|
| {
|
| - if (this == NULL) {
|
| - return CFX_WideString();
|
| - }
|
| if (m_Type == PDFOBJ_STRING) {
|
| return PDF_DecodeText(((CPDF_String*)this)->m_String, pCharMap);
|
| } else if (m_Type == PDFOBJ_STREAM) {
|
| @@ -349,9 +324,6 @@ CFX_WideString CPDF_Object::GetUnicodeText(CFX_CharMap* pCharMap) const
|
| }
|
| void CPDF_Object::SetUnicodeText(FX_LPCWSTR pUnicodes, int len)
|
| {
|
| - if (this == NULL) {
|
| - return;
|
| - }
|
| if (m_Type == PDFOBJ_STRING) {
|
| ((CPDF_String*)this)->m_String = PDF_EncodeText(pUnicodes, len);
|
| } else if (m_Type == PDFOBJ_STREAM) {
|
| @@ -411,13 +383,14 @@ CPDF_Array::~CPDF_Array()
|
| int size = m_Objects.GetSize();
|
| CPDF_Object** pList = (CPDF_Object**)m_Objects.GetData();
|
| for (int i = 0; i < size; i ++) {
|
| - pList[i]->Release();
|
| + if (pList[i])
|
| + pList[i]->Release();
|
| }
|
| }
|
| CFX_FloatRect CPDF_Array::GetRect()
|
| {
|
| CFX_FloatRect rect;
|
| - if (this == NULL || m_Type != PDFOBJ_ARRAY || m_Objects.GetSize() != 4) {
|
| + if (m_Type != PDFOBJ_ARRAY || m_Objects.GetSize() != 4) {
|
| return rect;
|
| }
|
| rect.left = GetNumber(0);
|
| @@ -429,7 +402,7 @@ CFX_FloatRect CPDF_Array::GetRect()
|
| CFX_AffineMatrix CPDF_Array::GetMatrix()
|
| {
|
| CFX_AffineMatrix matrix;
|
| - if (this == NULL || m_Type != PDFOBJ_ARRAY || m_Objects.GetSize() != 6) {
|
| + if (m_Type != PDFOBJ_ARRAY || m_Objects.GetSize() != 6) {
|
| return matrix;
|
| }
|
| matrix.Set(GetNumber(0), GetNumber(1), GetNumber(2), GetNumber(3), GetNumber(4), GetNumber(5));
|
| @@ -437,9 +410,6 @@ CFX_AffineMatrix CPDF_Array::GetMatrix()
|
| }
|
| CPDF_Object* CPDF_Array::GetElement(FX_DWORD i) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return NULL;
|
| }
|
| @@ -447,9 +417,6 @@ CPDF_Object* CPDF_Array::GetElement(FX_DWORD i) const
|
| }
|
| CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return NULL;
|
| }
|
| @@ -457,23 +424,25 @@ CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const
|
| }
|
| CFX_ByteString CPDF_Array::GetString(FX_DWORD i) const
|
| {
|
| - if (this && i < (FX_DWORD)m_Objects.GetSize()) {
|
| + if (i < (FX_DWORD)m_Objects.GetSize()) {
|
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
|
| return p->GetString();
|
| }
|
| - return CFX_ByteString();
|
| + else
|
| + return CFX_ByteString();
|
| }
|
| CFX_ByteStringC CPDF_Array::GetConstString(FX_DWORD i) const
|
| {
|
| - if (this && i < (FX_DWORD)m_Objects.GetSize()) {
|
| + if (i < (FX_DWORD)m_Objects.GetSize()) {
|
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
|
| return p->GetConstString();
|
| }
|
| - return CFX_ByteStringC();
|
| + else
|
| + return CFX_ByteStringC();
|
| }
|
| int CPDF_Array::GetInteger(FX_DWORD i) const
|
| {
|
| - if (this == NULL || i >= (FX_DWORD)m_Objects.GetSize()) {
|
| + if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return 0;
|
| }
|
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
|
| @@ -481,7 +450,7 @@ int CPDF_Array::GetInteger(FX_DWORD i) const
|
| }
|
| FX_FLOAT CPDF_Array::GetNumber(FX_DWORD i) const
|
| {
|
| - if (this == NULL || i >= (FX_DWORD)m_Objects.GetSize()) {
|
| + if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return 0;
|
| }
|
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
|
| @@ -517,23 +486,25 @@ CPDF_Array* CPDF_Array::GetArray(FX_DWORD i) const
|
| }
|
| void CPDF_Array::RemoveAt(FX_DWORD i)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return;
|
| }
|
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i);
|
| - p->Release();
|
| + if (p)
|
| + p->Release();
|
| m_Objects.RemoveAt(i);
|
| }
|
| void CPDF_Array::SetAt(FX_DWORD i, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| ASSERT(i < (FX_DWORD)m_Objects.GetSize());
|
| if (i >= (FX_DWORD)m_Objects.GetSize()) {
|
| return;
|
| }
|
| CPDF_Object* pOld = (CPDF_Object*)m_Objects.GetAt(i);
|
| - pOld->Release();
|
| + if (pOld)
|
| + pOld->Release();
|
| if (pObj->GetObjNum()) {
|
| ASSERT(pObjs != NULL);
|
| pObj = CPDF_Reference::Create(pObjs, pObj->GetObjNum());
|
| @@ -560,29 +531,29 @@ void CPDF_Array::Add(CPDF_Object* pObj, CPDF_IndirectObjects* pObjs)
|
| }
|
| void CPDF_Array::AddName(const CFX_ByteString& str)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| Add(FX_NEW CPDF_Name(str));
|
| }
|
| void CPDF_Array::AddString(const CFX_ByteString& str)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| Add(FX_NEW CPDF_String(str));
|
| }
|
| void CPDF_Array::AddInteger(int i)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| Add(FX_NEW CPDF_Number(i));
|
| }
|
| void CPDF_Array::AddNumber(FX_FLOAT f)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| CPDF_Number* pNumber = FX_NEW CPDF_Number;
|
| pNumber->SetNumber(f);
|
| Add(pNumber);
|
| }
|
| void CPDF_Array::AddReference(CPDF_IndirectObjects* pDoc, FX_DWORD objnum)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_ARRAY);
|
| + ASSERT(m_Type == PDFOBJ_ARRAY);
|
| Add(FX_NEW CPDF_Reference(pDoc, objnum));
|
| }
|
| FX_BOOL CPDF_Array::Identical(CPDF_Array* pOther) const
|
| @@ -601,7 +572,8 @@ CPDF_Dictionary::~CPDF_Dictionary()
|
| FX_POSITION pos = m_Map.GetStartPosition();
|
| while (pos) {
|
| FX_LPVOID value = m_Map.GetNextValue(pos);
|
| - ((CPDF_Object*)value)->Release();
|
| + if (value)
|
| + ((CPDF_Object*)value)->Release();
|
| }
|
| }
|
| FX_POSITION CPDF_Dictionary::GetStartPos() const
|
| @@ -619,123 +591,99 @@ CPDF_Object* CPDF_Dictionary::GetNextElement(FX_POSITION& pos, CFX_ByteString& k
|
| }
|
| CPDF_Object* CPDF_Dictionary::GetElement(FX_BSTR key) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| CPDF_Object* p = NULL;
|
| m_Map.Lookup(key, (void*&)p);
|
| return p;
|
| }
|
| CPDF_Object* CPDF_Dictionary::GetElementValue(FX_BSTR key) const
|
| {
|
| - if (this == NULL) {
|
| - return NULL;
|
| - }
|
| CPDF_Object* p = NULL;
|
| m_Map.Lookup(key, (void*&)p);
|
| - return p->GetDirect();
|
| + return p ? p->GetDirect() : NULL;
|
| }
|
| CFX_ByteString CPDF_Dictionary::GetString(FX_BSTR key) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetString();
|
| - }
|
| - }
|
| - return CFX_ByteString();
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p)
|
| + return p->GetString();
|
| + else
|
| + return CFX_ByteString();
|
| }
|
| CFX_ByteStringC CPDF_Dictionary::GetConstString(FX_BSTR key) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetConstString();
|
| - }
|
| - }
|
| - return CFX_ByteStringC();
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p)
|
| + return p->GetConstString();
|
| + else
|
| + return CFX_ByteStringC();
|
| }
|
| CFX_WideString CPDF_Dictionary::GetUnicodeText(FX_BSTR key, CFX_CharMap* pCharMap) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - if(p->GetType() == PDFOBJ_REFERENCE) {
|
| - p = ((CPDF_Reference*)p)->GetDirect();
|
| - return p->GetUnicodeText(pCharMap);
|
| - } else {
|
| - return p->GetUnicodeText(pCharMap);
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p) {
|
| + if(p->GetType() == PDFOBJ_REFERENCE) {
|
| + p = ((CPDF_Reference*)p)->GetDirect();
|
| + return p->GetUnicodeText(pCharMap);
|
| + } else {
|
| + return p->GetUnicodeText(pCharMap);
|
| }
|
| }
|
| return CFX_WideString();
|
| }
|
| CFX_ByteString CPDF_Dictionary::GetString(FX_BSTR key, FX_BSTR def) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetString();
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p) {
|
| + return p->GetString();
|
| }
|
| return CFX_ByteString(def);
|
| }
|
| CFX_ByteStringC CPDF_Dictionary::GetConstString(FX_BSTR key, FX_BSTR def) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetConstString();
|
| - }
|
| - }
|
| - return CFX_ByteStringC(def);
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p)
|
| + return p->GetConstString();
|
| + else
|
| + return CFX_ByteStringC(def);
|
| }
|
| int CPDF_Dictionary::GetInteger(FX_BSTR key) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetInteger();
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p) {
|
| + return p->GetInteger();
|
| }
|
| return 0;
|
| }
|
| int CPDF_Dictionary::GetInteger(FX_BSTR key, int def) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetInteger();
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p) {
|
| + return p->GetInteger();
|
| }
|
| return def;
|
| }
|
| FX_FLOAT CPDF_Dictionary::GetNumber(FX_BSTR key) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p) {
|
| - return p->GetNumber();
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p) {
|
| + return p->GetNumber();
|
| }
|
| return 0;
|
| }
|
| FX_BOOL CPDF_Dictionary::GetBoolean(FX_BSTR key, FX_BOOL bDefault) const
|
| {
|
| - if (this) {
|
| - CPDF_Object* p = NULL;
|
| - m_Map.Lookup(key, (void*&)p);
|
| - if (p && p->GetType() == PDFOBJ_BOOLEAN) {
|
| - return p->GetInteger();
|
| - }
|
| + CPDF_Object* p = NULL;
|
| + m_Map.Lookup(key, (void*&)p);
|
| + if (p && p->GetType() == PDFOBJ_BOOLEAN) {
|
| + return p->GetInteger();
|
| }
|
| return bDefault;
|
| }
|
| @@ -787,23 +735,19 @@ CFX_AffineMatrix CPDF_Dictionary::GetMatrix(FX_BSTR key) const
|
| }
|
| FX_BOOL CPDF_Dictionary::KeyExist(FX_BSTR key) const
|
| {
|
| - if (this == NULL) {
|
| - return FALSE;
|
| - }
|
| FX_LPVOID value;
|
| return m_Map.Lookup(key, value);
|
| }
|
| void CPDF_Dictionary::SetAt(FX_BSTR key, CPDF_Object* pObj, CPDF_IndirectObjects* pObjs)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_DICTIONARY);
|
| + ASSERT(m_Type == PDFOBJ_DICTIONARY);
|
| CPDF_Object* p = NULL;
|
| m_Map.Lookup(key, (void*&)p);
|
| if (p == pObj) {
|
| return;
|
| }
|
| - if (p) {
|
| + if (p)
|
| p->Release();
|
| - }
|
| if (pObj) {
|
| if (pObj->GetObjNum()) {
|
| ASSERT(pObjs != NULL);
|
| @@ -816,12 +760,12 @@ void CPDF_Dictionary::SetAt(FX_BSTR key, CPDF_Object* pObj, CPDF_IndirectObjects
|
| }
|
| void CPDF_Dictionary::AddValue(FX_BSTR key, CPDF_Object* pObj)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_DICTIONARY);
|
| + ASSERT(m_Type == PDFOBJ_DICTIONARY);
|
| m_Map.AddValue(key, pObj);
|
| }
|
| void CPDF_Dictionary::RemoveAt(FX_BSTR key)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_DICTIONARY);
|
| + ASSERT(m_Type == PDFOBJ_DICTIONARY);
|
| CPDF_Object* p = NULL;
|
| m_Map.Lookup(key, (void*&)p);
|
| if (p == NULL) {
|
| @@ -832,7 +776,7 @@ void CPDF_Dictionary::RemoveAt(FX_BSTR key)
|
| }
|
| void CPDF_Dictionary::ReplaceKey(FX_BSTR oldkey, FX_BSTR newkey)
|
| {
|
| - ASSERT(this != NULL && m_Type == PDFOBJ_DICTIONARY);
|
| + ASSERT(m_Type == PDFOBJ_DICTIONARY);
|
| CPDF_Object* p = NULL;
|
| m_Map.Lookup(oldkey, (void*&)p);
|
| if (p == NULL) {
|
| @@ -843,12 +787,6 @@ void CPDF_Dictionary::ReplaceKey(FX_BSTR oldkey, FX_BSTR newkey)
|
| }
|
| FX_BOOL CPDF_Dictionary::Identical(CPDF_Dictionary* pOther) const
|
| {
|
| - if (this == NULL) {
|
| - if (pOther == NULL) {
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| - }
|
| if (pOther == NULL) {
|
| return FALSE;
|
| }
|
| @@ -860,6 +798,8 @@ FX_BOOL CPDF_Dictionary::Identical(CPDF_Dictionary* pOther) const
|
| CFX_ByteString key;
|
| FX_LPVOID value;
|
| m_Map.GetNextAssoc(pos, key, value);
|
| + if (!value)
|
| + return FALSE;
|
| if (!((CPDF_Object*)value)->IsIdentical(pOther->GetElement(key))) {
|
| return FALSE;
|
| }
|
| @@ -1014,6 +954,9 @@ void CPDF_Stream::InitStream(IFX_FileRead *pFile, CPDF_Dictionary* pDict)
|
| }
|
| FX_BOOL CPDF_Stream::Identical(CPDF_Stream* pOther) const
|
| {
|
| + if (!m_pDict)
|
| + return pOther->m_pDict ? FALSE : TRUE;
|
| +
|
| if (!m_pDict->Identical(pOther->m_pDict)) {
|
| return FALSE;
|
| }
|
|
|