| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 2028 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2039 FX_BOOL bDecrypt) { | 2039 FX_BOOL bDecrypt) { |
| 2040 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); | 2040 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); |
| 2041 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) { | 2041 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) { |
| 2042 return NULL; | 2042 return NULL; |
| 2043 } | 2043 } |
| 2044 FX_FILESIZE SavedPos = m_Pos; | 2044 FX_FILESIZE SavedPos = m_Pos; |
| 2045 FX_BOOL bTypeOnly = pContext && (pContext->m_Flags & PDFPARSE_TYPEONLY); | 2045 FX_BOOL bTypeOnly = pContext && (pContext->m_Flags & PDFPARSE_TYPEONLY); |
| 2046 FX_BOOL bIsNumber; | 2046 FX_BOOL bIsNumber; |
| 2047 CFX_ByteString word = GetNextWord(bIsNumber); | 2047 CFX_ByteString word = GetNextWord(bIsNumber); |
| 2048 if (word.GetLength() == 0) { | 2048 if (word.GetLength() == 0) { |
| 2049 if (bTypeOnly) { | 2049 if (bTypeOnly) |
| 2050 return (CPDF_Object*)PDFOBJ_INVALID; | 2050 return (CPDF_Object*)PDFOBJ_INVALID; |
| 2051 } | |
| 2052 return NULL; | 2051 return NULL; |
| 2053 } | 2052 } |
| 2054 if (bIsNumber) { | 2053 if (bIsNumber) { |
| 2055 FX_FILESIZE SavedPos = m_Pos; | 2054 FX_FILESIZE SavedPos = m_Pos; |
| 2056 CFX_ByteString nextword = GetNextWord(bIsNumber); | 2055 CFX_ByteString nextword = GetNextWord(bIsNumber); |
| 2057 if (bIsNumber) { | 2056 if (bIsNumber) { |
| 2058 CFX_ByteString nextword2 = GetNextWord(bIsNumber); | 2057 CFX_ByteString nextword2 = GetNextWord(bIsNumber); |
| 2059 if (nextword2 == FX_BSTRC("R")) { | 2058 if (nextword2 == FX_BSTRC("R")) { |
| 2060 FX_DWORD objnum = FXSYS_atoi(word); | 2059 FX_DWORD objnum = FXSYS_atoi(word); |
| 2061 if (bTypeOnly) { | 2060 if (bTypeOnly) |
| 2062 return (CPDF_Object*)PDFOBJ_REFERENCE; | 2061 return (CPDF_Object*)PDFOBJ_REFERENCE; |
| 2063 } | |
| 2064 return new CPDF_Reference(pObjList, objnum); | 2062 return new CPDF_Reference(pObjList, objnum); |
| 2065 } | 2063 } |
| 2066 } | 2064 } |
| 2067 m_Pos = SavedPos; | 2065 m_Pos = SavedPos; |
| 2068 if (bTypeOnly) { | 2066 if (bTypeOnly) |
| 2069 return (CPDF_Object*)PDFOBJ_NUMBER; | 2067 return (CPDF_Object*)PDFOBJ_NUMBER; |
| 2070 } | |
| 2071 return CPDF_Number::Create(word); | 2068 return CPDF_Number::Create(word); |
| 2072 } | 2069 } |
| 2073 if (word == FX_BSTRC("true") || word == FX_BSTRC("false")) { | 2070 if (word == FX_BSTRC("true") || word == FX_BSTRC("false")) { |
| 2074 if (bTypeOnly) { | 2071 if (bTypeOnly) |
| 2075 return (CPDF_Object*)PDFOBJ_BOOLEAN; | 2072 return (CPDF_Object*)PDFOBJ_BOOLEAN; |
| 2076 } | |
| 2077 return CPDF_Boolean::Create(word == FX_BSTRC("true")); | 2073 return CPDF_Boolean::Create(word == FX_BSTRC("true")); |
| 2078 } | 2074 } |
| 2079 if (word == FX_BSTRC("null")) { | 2075 if (word == FX_BSTRC("null")) { |
| 2080 if (bTypeOnly) { | 2076 if (bTypeOnly) |
| 2081 return (CPDF_Object*)PDFOBJ_NULL; | 2077 return (CPDF_Object*)PDFOBJ_NULL; |
| 2082 } | |
| 2083 return CPDF_Null::Create(); | 2078 return CPDF_Null::Create(); |
| 2084 } | 2079 } |
| 2085 if (word == FX_BSTRC("(")) { | 2080 if (word == FX_BSTRC("(")) { |
| 2086 if (bTypeOnly) { | 2081 if (bTypeOnly) |
| 2087 return (CPDF_Object*)PDFOBJ_STRING; | 2082 return (CPDF_Object*)PDFOBJ_STRING; |
| 2088 } | |
| 2089 CFX_ByteString str = ReadString(); | 2083 CFX_ByteString str = ReadString(); |
| 2090 if (m_pCryptoHandler && bDecrypt) { | 2084 if (m_pCryptoHandler && bDecrypt) { |
| 2091 m_pCryptoHandler->Decrypt(objnum, gennum, str); | 2085 m_pCryptoHandler->Decrypt(objnum, gennum, str); |
| 2092 } | 2086 } |
| 2093 return CPDF_String::Create(str, FALSE); | 2087 return CPDF_String::Create(str, FALSE); |
| 2094 } | 2088 } |
| 2095 if (word == FX_BSTRC("<")) { | 2089 if (word == FX_BSTRC("<")) { |
| 2096 if (bTypeOnly) { | 2090 if (bTypeOnly) |
| 2097 return (CPDF_Object*)PDFOBJ_STRING; | 2091 return (CPDF_Object*)PDFOBJ_STRING; |
| 2098 } | |
| 2099 CFX_ByteString str = ReadHexString(); | 2092 CFX_ByteString str = ReadHexString(); |
| 2100 if (m_pCryptoHandler && bDecrypt) { | 2093 if (m_pCryptoHandler && bDecrypt) { |
| 2101 m_pCryptoHandler->Decrypt(objnum, gennum, str); | 2094 m_pCryptoHandler->Decrypt(objnum, gennum, str); |
| 2102 } | 2095 } |
| 2103 return CPDF_String::Create(str, TRUE); | 2096 return CPDF_String::Create(str, TRUE); |
| 2104 } | 2097 } |
| 2105 if (word == FX_BSTRC("[")) { | 2098 if (word == FX_BSTRC("[")) { |
| 2106 if (bTypeOnly) { | 2099 if (bTypeOnly) |
| 2107 return (CPDF_Object*)PDFOBJ_ARRAY; | 2100 return (CPDF_Object*)PDFOBJ_ARRAY; |
| 2108 } | |
| 2109 CPDF_Array* pArray = CPDF_Array::Create(); | 2101 CPDF_Array* pArray = CPDF_Array::Create(); |
| 2110 while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum)) | 2102 while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum)) |
| 2111 pArray->Add(pObj); | 2103 pArray->Add(pObj); |
| 2112 | 2104 |
| 2113 return pArray; | 2105 return pArray; |
| 2114 } | 2106 } |
| 2115 if (word[0] == '/') { | 2107 if (word[0] == '/') { |
| 2116 if (bTypeOnly) { | 2108 if (bTypeOnly) |
| 2117 return (CPDF_Object*)PDFOBJ_NAME; | 2109 return (CPDF_Object*)PDFOBJ_NAME; |
| 2118 } | |
| 2119 return CPDF_Name::Create( | 2110 return CPDF_Name::Create( |
| 2120 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); | 2111 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); |
| 2121 } | 2112 } |
| 2122 if (word == FX_BSTRC("<<")) { | 2113 if (word == FX_BSTRC("<<")) { |
| 2123 if (bTypeOnly) | 2114 if (bTypeOnly) |
| 2124 return (CPDF_Object*)PDFOBJ_DICTIONARY; | 2115 return (CPDF_Object*)PDFOBJ_DICTIONARY; |
| 2125 | 2116 |
| 2126 if (pContext) | 2117 if (pContext) |
| 2127 pContext->m_DictStart = SavedPos; | 2118 pContext->m_DictStart = SavedPos; |
| 2128 | 2119 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2212 struct PARSE_CONTEXT* pContext) { | 2203 struct PARSE_CONTEXT* pContext) { |
| 2213 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); | 2204 CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth); |
| 2214 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) { | 2205 if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) { |
| 2215 return NULL; | 2206 return NULL; |
| 2216 } | 2207 } |
| 2217 FX_FILESIZE SavedPos = m_Pos; | 2208 FX_FILESIZE SavedPos = m_Pos; |
| 2218 FX_BOOL bTypeOnly = pContext && (pContext->m_Flags & PDFPARSE_TYPEONLY); | 2209 FX_BOOL bTypeOnly = pContext && (pContext->m_Flags & PDFPARSE_TYPEONLY); |
| 2219 FX_BOOL bIsNumber; | 2210 FX_BOOL bIsNumber; |
| 2220 CFX_ByteString word = GetNextWord(bIsNumber); | 2211 CFX_ByteString word = GetNextWord(bIsNumber); |
| 2221 if (word.GetLength() == 0) { | 2212 if (word.GetLength() == 0) { |
| 2222 if (bTypeOnly) { | 2213 if (bTypeOnly) |
| 2223 return (CPDF_Object*)PDFOBJ_INVALID; | 2214 return (CPDF_Object*)PDFOBJ_INVALID; |
| 2224 } | 2215 return nullptr; |
| 2225 return NULL; | |
| 2226 } | 2216 } |
| 2227 if (bIsNumber) { | 2217 if (bIsNumber) { |
| 2228 FX_FILESIZE SavedPos = m_Pos; | 2218 FX_FILESIZE SavedPos = m_Pos; |
| 2229 CFX_ByteString nextword = GetNextWord(bIsNumber); | 2219 CFX_ByteString nextword = GetNextWord(bIsNumber); |
| 2230 if (bIsNumber) { | 2220 if (bIsNumber) { |
| 2231 CFX_ByteString nextword2 = GetNextWord(bIsNumber); | 2221 CFX_ByteString nextword2 = GetNextWord(bIsNumber); |
| 2232 if (nextword2 == FX_BSTRC("R")) { | 2222 if (nextword2 == FX_BSTRC("R")) { |
| 2233 if (bTypeOnly) { | 2223 if (bTypeOnly) |
| 2234 return (CPDF_Object*)PDFOBJ_REFERENCE; | 2224 return (CPDF_Object*)PDFOBJ_REFERENCE; |
| 2235 } | |
| 2236 FX_DWORD objnum = FXSYS_atoi(word); | 2225 FX_DWORD objnum = FXSYS_atoi(word); |
| 2237 return new CPDF_Reference(pObjList, objnum); | 2226 return new CPDF_Reference(pObjList, objnum); |
| 2238 } | 2227 } |
| 2239 } | 2228 } |
| 2240 m_Pos = SavedPos; | 2229 m_Pos = SavedPos; |
| 2241 if (bTypeOnly) { | 2230 if (bTypeOnly) |
| 2242 return (CPDF_Object*)PDFOBJ_NUMBER; | 2231 return (CPDF_Object*)PDFOBJ_NUMBER; |
| 2243 } | |
| 2244 return CPDF_Number::Create(word); | 2232 return CPDF_Number::Create(word); |
| 2245 } | 2233 } |
| 2246 if (word == FX_BSTRC("true") || word == FX_BSTRC("false")) { | 2234 if (word == FX_BSTRC("true") || word == FX_BSTRC("false")) { |
| 2247 if (bTypeOnly) { | 2235 if (bTypeOnly) |
| 2248 return (CPDF_Object*)PDFOBJ_BOOLEAN; | 2236 return (CPDF_Object*)PDFOBJ_BOOLEAN; |
| 2249 } | |
| 2250 return CPDF_Boolean::Create(word == FX_BSTRC("true")); | 2237 return CPDF_Boolean::Create(word == FX_BSTRC("true")); |
| 2251 } | 2238 } |
| 2252 if (word == FX_BSTRC("null")) { | 2239 if (word == FX_BSTRC("null")) { |
| 2253 if (bTypeOnly) { | 2240 if (bTypeOnly) |
| 2254 return (CPDF_Object*)PDFOBJ_NULL; | 2241 return (CPDF_Object*)PDFOBJ_NULL; |
| 2255 } | |
| 2256 return CPDF_Null::Create(); | 2242 return CPDF_Null::Create(); |
| 2257 } | 2243 } |
| 2258 if (word == FX_BSTRC("(")) { | 2244 if (word == FX_BSTRC("(")) { |
| 2259 if (bTypeOnly) { | 2245 if (bTypeOnly) |
| 2260 return (CPDF_Object*)PDFOBJ_STRING; | 2246 return (CPDF_Object*)PDFOBJ_STRING; |
| 2261 } | |
| 2262 CFX_ByteString str = ReadString(); | 2247 CFX_ByteString str = ReadString(); |
| 2263 if (m_pCryptoHandler) { | 2248 if (m_pCryptoHandler) |
| 2264 m_pCryptoHandler->Decrypt(objnum, gennum, str); | 2249 m_pCryptoHandler->Decrypt(objnum, gennum, str); |
| 2265 } | |
| 2266 return CPDF_String::Create(str, FALSE); | 2250 return CPDF_String::Create(str, FALSE); |
| 2267 } | 2251 } |
| 2268 if (word == FX_BSTRC("<")) { | 2252 if (word == FX_BSTRC("<")) { |
| 2269 if (bTypeOnly) { | 2253 if (bTypeOnly) |
| 2270 return (CPDF_Object*)PDFOBJ_STRING; | 2254 return (CPDF_Object*)PDFOBJ_STRING; |
| 2271 } | |
| 2272 CFX_ByteString str = ReadHexString(); | 2255 CFX_ByteString str = ReadHexString(); |
| 2273 if (m_pCryptoHandler) { | 2256 if (m_pCryptoHandler) |
| 2274 m_pCryptoHandler->Decrypt(objnum, gennum, str); | 2257 m_pCryptoHandler->Decrypt(objnum, gennum, str); |
| 2275 } | |
| 2276 return CPDF_String::Create(str, TRUE); | 2258 return CPDF_String::Create(str, TRUE); |
| 2277 } | 2259 } |
| 2278 if (word == FX_BSTRC("[")) { | 2260 if (word == FX_BSTRC("[")) { |
| 2279 if (bTypeOnly) { | 2261 if (bTypeOnly) |
| 2280 return (CPDF_Object*)PDFOBJ_ARRAY; | 2262 return (CPDF_Object*)PDFOBJ_ARRAY; |
| 2281 } | |
| 2282 nonstd::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>> pArray( | 2263 nonstd::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>> pArray( |
| 2283 CPDF_Array::Create()); | 2264 CPDF_Array::Create()); |
| 2284 while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum)) | 2265 while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum)) |
| 2285 pArray->Add(pObj); | 2266 pArray->Add(pObj); |
| 2286 return m_WordBuffer[0] == ']' ? pArray.release() : nullptr; | 2267 return m_WordBuffer[0] == ']' ? pArray.release() : nullptr; |
| 2287 } | 2268 } |
| 2288 if (word[0] == '/') { | 2269 if (word[0] == '/') { |
| 2289 if (bTypeOnly) { | 2270 if (bTypeOnly) |
| 2290 return (CPDF_Object*)PDFOBJ_NAME; | 2271 return (CPDF_Object*)PDFOBJ_NAME; |
| 2291 } | |
| 2292 return CPDF_Name::Create( | 2272 return CPDF_Name::Create( |
| 2293 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); | 2273 PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); |
| 2294 } | 2274 } |
| 2295 if (word == FX_BSTRC("<<")) { | 2275 if (word == FX_BSTRC("<<")) { |
| 2296 if (bTypeOnly) { | 2276 if (bTypeOnly) |
| 2297 return (CPDF_Object*)PDFOBJ_DICTIONARY; | 2277 return (CPDF_Object*)PDFOBJ_DICTIONARY; |
| 2298 } | 2278 if (pContext) |
| 2299 if (pContext) { | |
| 2300 pContext->m_DictStart = SavedPos; | 2279 pContext->m_DictStart = SavedPos; |
| 2301 } | 2280 |
| 2302 nonstd::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict( | 2281 nonstd::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict( |
| 2303 CPDF_Dictionary::Create()); | 2282 CPDF_Dictionary::Create()); |
| 2304 while (1) { | 2283 while (1) { |
| 2305 FX_BOOL bIsNumber; | 2284 FX_BOOL bIsNumber; |
| 2306 FX_FILESIZE SavedPos = m_Pos; | 2285 FX_FILESIZE SavedPos = m_Pos; |
| 2307 CFX_ByteString key = GetNextWord(bIsNumber); | 2286 CFX_ByteString key = GetNextWord(bIsNumber); |
| 2308 if (key.IsEmpty()) | 2287 if (key.IsEmpty()) |
| 2309 return nullptr; | 2288 return nullptr; |
| 2310 | 2289 |
| 2311 if (key == FX_BSTRC(">>")) | 2290 if (key == FX_BSTRC(">>")) |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2347 } | 2326 } |
| 2348 | 2327 |
| 2349 return ReadStream(pDict.release(), pContext, objnum, gennum); | 2328 return ReadStream(pDict.release(), pContext, objnum, gennum); |
| 2350 } | 2329 } |
| 2351 if (word == FX_BSTRC(">>")) { | 2330 if (word == FX_BSTRC(">>")) { |
| 2352 m_Pos = SavedPos; | 2331 m_Pos = SavedPos; |
| 2353 return nullptr; | 2332 return nullptr; |
| 2354 } | 2333 } |
| 2355 if (bTypeOnly) | 2334 if (bTypeOnly) |
| 2356 return (CPDF_Object*)PDFOBJ_INVALID; | 2335 return (CPDF_Object*)PDFOBJ_INVALID; |
| 2357 | |
| 2358 return nullptr; | 2336 return nullptr; |
| 2359 } | 2337 } |
| 2360 | 2338 |
| 2361 unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) { | 2339 unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) { |
| 2362 unsigned char byte1 = 0; | 2340 unsigned char byte1 = 0; |
| 2363 unsigned char byte2 = 0; | 2341 unsigned char byte2 = 0; |
| 2364 GetCharAt(pos, byte1); | 2342 GetCharAt(pos, byte1); |
| 2365 GetCharAt(pos + 1, byte2); | 2343 GetCharAt(pos + 1, byte2); |
| 2366 unsigned int markers = 0; | 2344 unsigned int markers = 0; |
| 2367 if (byte1 == '\r' && byte2 == '\n') { | 2345 if (byte1 == '\r' && byte2 == '\n') { |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2984 } | 2962 } |
| 2985 if (m_pRoot) { | 2963 if (m_pRoot) { |
| 2986 m_pRoot->Release(); | 2964 m_pRoot->Release(); |
| 2987 } | 2965 } |
| 2988 if (m_pTrailer) { | 2966 if (m_pTrailer) { |
| 2989 m_pTrailer->Release(); | 2967 m_pTrailer->Release(); |
| 2990 } | 2968 } |
| 2991 int32_t i = 0; | 2969 int32_t i = 0; |
| 2992 int32_t iSize = m_arrayAcroforms.GetSize(); | 2970 int32_t iSize = m_arrayAcroforms.GetSize(); |
| 2993 for (i = 0; i < iSize; ++i) { | 2971 for (i = 0; i < iSize; ++i) { |
| 2994 ((CPDF_Object*)m_arrayAcroforms.GetAt(i))->Release(); | 2972 static_cast<CPDF_Object*>(m_arrayAcroforms.GetAt(i))->Release(); |
| 2995 } | 2973 } |
| 2996 } | 2974 } |
| 2997 void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { | 2975 void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { |
| 2998 m_pDocument = pDoc; | 2976 m_pDocument = pDoc; |
| 2999 } | 2977 } |
| 3000 FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) { | 2978 FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) { |
| 3001 CPDF_Parser* pParser = (CPDF_Parser*)(m_pDocument->GetParser()); | 2979 CPDF_Parser* pParser = (CPDF_Parser*)(m_pDocument->GetParser()); |
| 3002 if (pParser == NULL) { | 2980 if (pParser == NULL) { |
| 3003 return 0; | 2981 return 0; |
| 3004 } | 2982 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 3032 FX_BOOL bParsePage, | 3010 FX_BOOL bParsePage, |
| 3033 IFX_DownloadHints* pHints, | 3011 IFX_DownloadHints* pHints, |
| 3034 CFX_PtrArray& ret_array) { | 3012 CFX_PtrArray& ret_array) { |
| 3035 if (!obj_array.GetSize()) { | 3013 if (!obj_array.GetSize()) { |
| 3036 return TRUE; | 3014 return TRUE; |
| 3037 } | 3015 } |
| 3038 FX_DWORD count = 0; | 3016 FX_DWORD count = 0; |
| 3039 CFX_PtrArray new_obj_array; | 3017 CFX_PtrArray new_obj_array; |
| 3040 int32_t i = 0; | 3018 int32_t i = 0; |
| 3041 for (i = 0; i < obj_array.GetSize(); i++) { | 3019 for (i = 0; i < obj_array.GetSize(); i++) { |
| 3042 CPDF_Object* pObj = (CPDF_Object*)obj_array[i]; | 3020 CPDF_Object* pObj = static_cast<CPDF_Object*>(obj_array[i]); |
| 3043 if (!pObj) { | 3021 if (!pObj) |
| 3044 continue; | 3022 continue; |
| 3045 } | 3023 |
| 3046 int32_t type = pObj->GetType(); | 3024 int32_t type = pObj->GetType(); |
| 3047 switch (type) { | 3025 switch (type) { |
| 3048 case PDFOBJ_ARRAY: { | 3026 case PDFOBJ_ARRAY: { |
| 3049 CPDF_Array* pArray = pObj->GetArray(); | 3027 CPDF_Array* pArray = pObj->GetArray(); |
| 3050 for (FX_DWORD k = 0; k < pArray->GetCount(); k++) { | 3028 for (FX_DWORD k = 0; k < pArray->GetCount(); k++) { |
| 3051 new_obj_array.Add(pArray->GetElement(k)); | 3029 new_obj_array.Add(pArray->GetElement(k)); |
| 3052 } | 3030 } |
| 3053 } break; | 3031 } break; |
| 3054 case PDFOBJ_STREAM: | 3032 case PDFOBJ_STREAM: |
| 3055 pObj = pObj->GetDict(); | 3033 pObj = pObj->GetDict(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3103 if (pReferred) { | 3081 if (pReferred) { |
| 3104 new_obj_array.Add(pReferred); | 3082 new_obj_array.Add(pReferred); |
| 3105 } | 3083 } |
| 3106 } | 3084 } |
| 3107 } break; | 3085 } break; |
| 3108 } | 3086 } |
| 3109 } | 3087 } |
| 3110 if (count > 0) { | 3088 if (count > 0) { |
| 3111 int32_t iSize = new_obj_array.GetSize(); | 3089 int32_t iSize = new_obj_array.GetSize(); |
| 3112 for (i = 0; i < iSize; ++i) { | 3090 for (i = 0; i < iSize; ++i) { |
| 3113 CPDF_Object* pObj = (CPDF_Object*)new_obj_array[i]; | 3091 CPDF_Object* pObj = static_cast<CPDF_Object*>(new_obj_array[i]); |
| 3114 if (CPDF_Reference* pRef = pObj->AsReference()) { | 3092 if (CPDF_Reference* pRef = pObj->AsReference()) { |
| 3115 FX_DWORD dwNum = pRef->GetRefObjNum(); | 3093 FX_DWORD dwNum = pRef->GetRefObjNum(); |
| 3116 if (!m_objnum_array.Find(dwNum)) | 3094 if (!m_objnum_array.Find(dwNum)) |
| 3117 ret_array.Add(pObj); | 3095 ret_array.Add(pObj); |
| 3118 } else { | 3096 } else { |
| 3119 ret_array.Add(pObj); | 3097 ret_array.Add(pObj); |
| 3120 } | 3098 } |
| 3121 } | 3099 } |
| 3122 return FALSE; | 3100 return FALSE; |
| 3123 } | 3101 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 3149 if (bRet) { | 3127 if (bRet) { |
| 3150 m_objs_array.RemoveAll(); | 3128 m_objs_array.RemoveAll(); |
| 3151 } | 3129 } |
| 3152 return bRet; | 3130 return bRet; |
| 3153 } | 3131 } |
| 3154 CFX_PtrArray new_objs_array; | 3132 CFX_PtrArray new_objs_array; |
| 3155 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); | 3133 FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); |
| 3156 if (bRet) { | 3134 if (bRet) { |
| 3157 int32_t iSize = m_arrayAcroforms.GetSize(); | 3135 int32_t iSize = m_arrayAcroforms.GetSize(); |
| 3158 for (int32_t i = 0; i < iSize; ++i) { | 3136 for (int32_t i = 0; i < iSize; ++i) { |
| 3159 ((CPDF_Object*)m_arrayAcroforms.GetAt(i))->Release(); | 3137 static_cast<CPDF_Object*>(m_arrayAcroforms.GetAt(i))->Release(); |
| 3160 } | 3138 } |
| 3161 m_arrayAcroforms.RemoveAll(); | 3139 m_arrayAcroforms.RemoveAll(); |
| 3162 } else { | 3140 } else { |
| 3163 m_objs_array.RemoveAll(); | 3141 m_objs_array.RemoveAll(); |
| 3164 m_objs_array.Append(new_objs_array); | 3142 m_objs_array.Append(new_objs_array); |
| 3165 } | 3143 } |
| 3166 return bRet; | 3144 return bRet; |
| 3167 } | 3145 } |
| 3168 FX_BOOL CPDF_DataAvail::CheckAcroForm(IFX_DownloadHints* pHints) { | 3146 FX_BOOL CPDF_DataAvail::CheckAcroForm(IFX_DownloadHints* pHints) { |
| 3169 FX_BOOL bExist = FALSE; | 3147 FX_BOOL bExist = FALSE; |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3462 } | 3440 } |
| 3463 pObj->Release(); | 3441 pObj->Release(); |
| 3464 } | 3442 } |
| 3465 m_PageObjList.RemoveAll(); | 3443 m_PageObjList.RemoveAll(); |
| 3466 if (UnavailObjList.GetSize()) { | 3444 if (UnavailObjList.GetSize()) { |
| 3467 m_PageObjList.Append(UnavailObjList); | 3445 m_PageObjList.Append(UnavailObjList); |
| 3468 return FALSE; | 3446 return FALSE; |
| 3469 } | 3447 } |
| 3470 FX_DWORD iPages = m_PagesArray.GetSize(); | 3448 FX_DWORD iPages = m_PagesArray.GetSize(); |
| 3471 for (FX_DWORD i = 0; i < iPages; i++) { | 3449 for (FX_DWORD i = 0; i < iPages; i++) { |
| 3472 CPDF_Object* pPages = (CPDF_Object*)m_PagesArray.GetAt(i); | 3450 CPDF_Object* pPages = static_cast<CPDF_Object*>(m_PagesArray.GetAt(i)); |
| 3473 if (!pPages) { | 3451 if (!pPages) |
| 3474 continue; | 3452 continue; |
| 3475 } | 3453 |
| 3476 if (!GetPageKids(m_pCurrentParser, pPages)) { | 3454 if (!GetPageKids(m_pCurrentParser, pPages)) { |
| 3477 pPages->Release(); | 3455 pPages->Release(); |
| 3478 while (++i < iPages) { | 3456 while (++i < iPages) { |
| 3479 pPages = (CPDF_Object*)m_PagesArray.GetAt(i); | 3457 pPages = static_cast<CPDF_Object*>(m_PagesArray.GetAt(i)); |
| 3480 pPages->Release(); | 3458 pPages->Release(); |
| 3481 } | 3459 } |
| 3482 m_PagesArray.RemoveAll(); | 3460 m_PagesArray.RemoveAll(); |
| 3483 m_docStatus = PDF_DATAAVAIL_ERROR; | 3461 m_docStatus = PDF_DATAAVAIL_ERROR; |
| 3484 return FALSE; | 3462 return FALSE; |
| 3485 } | 3463 } |
| 3486 pPages->Release(); | 3464 pPages->Release(); |
| 3487 } | 3465 } |
| 3488 m_PagesArray.RemoveAll(); | 3466 m_PagesArray.RemoveAll(); |
| 3489 if (!m_PageObjList.GetSize()) { | 3467 if (!m_PageObjList.GetSize()) { |
| (...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4583 return FALSE; | 4561 return FALSE; |
| 4584 } | 4562 } |
| 4585 CPDF_PageNode::~CPDF_PageNode() { | 4563 CPDF_PageNode::~CPDF_PageNode() { |
| 4586 int32_t iSize = m_childNode.GetSize(); | 4564 int32_t iSize = m_childNode.GetSize(); |
| 4587 for (int32_t i = 0; i < iSize; ++i) { | 4565 for (int32_t i = 0; i < iSize; ++i) { |
| 4588 CPDF_PageNode* pNode = (CPDF_PageNode*)m_childNode[i]; | 4566 CPDF_PageNode* pNode = (CPDF_PageNode*)m_childNode[i]; |
| 4589 delete pNode; | 4567 delete pNode; |
| 4590 } | 4568 } |
| 4591 m_childNode.RemoveAll(); | 4569 m_childNode.RemoveAll(); |
| 4592 } | 4570 } |
| OLD | NEW |