Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1211)

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "../../../include/fpdfapi/fpdf_parser.h" 7 #include "../../../include/fpdfapi/fpdf_parser.h"
8 #include "../../../include/fxcrt/fx_string.h" 8 #include "../../../include/fxcrt/fx_string.h"
9 9
10 //static 10 //static
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 CPDF_Stream* pObj; 288 CPDF_Stream* pObj;
289 if (pThis->GetDict()) 289 if (pThis->GetDict())
290 pObj = new CPDF_Stream(acc.DetachData(), streamSize, (CPDF_D ictionary*)((CPDF_Object*)pThis->GetDict())->CloneInternal(bDirect, visited)); 290 pObj = new CPDF_Stream(acc.DetachData(), streamSize, (CPDF_D ictionary*)((CPDF_Object*)pThis->GetDict())->CloneInternal(bDirect, visited));
291 else 291 else
292 pObj = new CPDF_Stream(acc.DetachData(), streamSize, NULL); 292 pObj = new CPDF_Stream(acc.DetachData(), streamSize, NULL);
293 return pObj; 293 return pObj;
294 } 294 }
295 case PDFOBJ_REFERENCE: { 295 case PDFOBJ_REFERENCE: {
296 CPDF_Reference* pRef = (CPDF_Reference*)this; 296 CPDF_Reference* pRef = (CPDF_Reference*)this;
297 FX_DWORD obj_num = pRef->m_RefObjNum; 297 FX_DWORD obj_num = pRef->m_RefObjNum;
298 if (bDirect && !visited->GetValueAt((void*)(FX_UINTPTR)obj_num)) { 298 if (bDirect && !visited->GetValueAt((void*)(uintptr_t)obj_num)) {
299 visited->SetAt((void*)(FX_UINTPTR)obj_num, (void*)1); 299 visited->SetAt((void*)(uintptr_t)obj_num, (void*)1);
300 CPDF_Object* ret; 300 CPDF_Object* ret;
301 if (pRef->GetDirect()) 301 if (pRef->GetDirect())
302 ret = pRef->GetDirect()->CloneInternal(TRUE, visited); 302 ret = pRef->GetDirect()->CloneInternal(TRUE, visited);
303 else 303 else
304 ret = NULL; 304 ret = NULL;
305 return ret; 305 return ret;
306 } else { 306 } else {
307 return new CPDF_Reference(pRef->m_pObjList, obj_num); 307 return new CPDF_Reference(pRef->m_pObjList, obj_num);
308 } 308 }
309 } 309 }
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 } 889 }
890 m_GenNum = 0; 890 m_GenNum = 0;
891 m_pFile = NULL; 891 m_pFile = NULL;
892 m_pCryptoHandler = NULL; 892 m_pCryptoHandler = NULL;
893 m_FileOffset = 0; 893 m_FileOffset = 0;
894 } 894 }
895 void CPDF_Stream::InitStream(FX_LPBYTE pData, FX_DWORD size, CPDF_Dictionary* pD ict) 895 void CPDF_Stream::InitStream(FX_LPBYTE pData, FX_DWORD size, CPDF_Dictionary* pD ict)
896 { 896 {
897 InitStream(pDict); 897 InitStream(pDict);
898 m_GenNum = (FX_DWORD) - 1; 898 m_GenNum = (FX_DWORD) - 1;
899 m_pDataBuf = FX_Alloc(FX_BYTE, size); 899 m_pDataBuf = FX_Alloc(uint8_t, size);
900 if (pData) { 900 if (pData) {
901 FXSYS_memcpy32(m_pDataBuf, pData, size); 901 FXSYS_memcpy32(m_pDataBuf, pData, size);
902 } 902 }
903 m_dwSize = size; 903 m_dwSize = size;
904 if (m_pDict) { 904 if (m_pDict) {
905 m_pDict->SetAtInteger(FX_BSTRC("Length"), size); 905 m_pDict->SetAtInteger(FX_BSTRC("Length"), size);
906 } 906 }
907 } 907 }
908 void CPDF_Stream::SetData(FX_LPCBYTE pData, FX_DWORD size, FX_BOOL bCompressed, FX_BOOL bKeepBuf) 908 void CPDF_Stream::SetData(FX_LPCBYTE pData, FX_DWORD size, FX_BOOL bCompressed, FX_BOOL bKeepBuf)
909 { 909 {
910 if (m_GenNum == (FX_DWORD) - 1) { 910 if (m_GenNum == (FX_DWORD) - 1) {
911 if (m_pDataBuf) { 911 if (m_pDataBuf) {
912 FX_Free(m_pDataBuf); 912 FX_Free(m_pDataBuf);
913 } 913 }
914 } else { 914 } else {
915 m_GenNum = (FX_DWORD) - 1; 915 m_GenNum = (FX_DWORD) - 1;
916 m_pCryptoHandler = NULL; 916 m_pCryptoHandler = NULL;
917 } 917 }
918 if (bKeepBuf) { 918 if (bKeepBuf) {
919 m_pDataBuf = (FX_LPBYTE)pData; 919 m_pDataBuf = (FX_LPBYTE)pData;
920 } else { 920 } else {
921 m_pDataBuf = FX_Alloc(FX_BYTE, size); 921 m_pDataBuf = FX_Alloc(uint8_t, size);
922 if (pData) { 922 if (pData) {
923 FXSYS_memcpy32(m_pDataBuf, pData, size); 923 FXSYS_memcpy32(m_pDataBuf, pData, size);
924 } 924 }
925 } 925 }
926 m_dwSize = size; 926 m_dwSize = size;
927 if (m_pDict == NULL) { 927 if (m_pDict == NULL) {
928 m_pDict = new CPDF_Dictionary; 928 m_pDict = new CPDF_Dictionary;
929 } 929 }
930 m_pDict->SetAtInteger(FX_BSTRC("Length"), size); 930 m_pDict->SetAtInteger(FX_BSTRC("Length"), size);
931 if (!bCompressed) { 931 if (!bCompressed) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 if (m_dwSize != pOther->m_dwSize) { 963 if (m_dwSize != pOther->m_dwSize) {
964 return FALSE; 964 return FALSE;
965 } 965 }
966 if (m_GenNum != (FX_DWORD) - 1 && pOther->m_GenNum != (FX_DWORD) - 1) { 966 if (m_GenNum != (FX_DWORD) - 1 && pOther->m_GenNum != (FX_DWORD) - 1) {
967 if (m_pFile == pOther->m_pFile && m_pFile == NULL) { 967 if (m_pFile == pOther->m_pFile && m_pFile == NULL) {
968 return TRUE; 968 return TRUE;
969 } 969 }
970 if (!m_pFile || !pOther->m_pFile) { 970 if (!m_pFile || !pOther->m_pFile) {
971 return FALSE; 971 return FALSE;
972 } 972 }
973 FX_BYTE srcBuf[1024]; 973 uint8_t srcBuf[1024];
974 FX_BYTE destBuf[1024]; 974 uint8_t destBuf[1024];
975 FX_DWORD size = m_dwSize; 975 FX_DWORD size = m_dwSize;
976 FX_DWORD srcOffset = m_FileOffset; 976 FX_DWORD srcOffset = m_FileOffset;
977 FX_DWORD destOffset = pOther->m_FileOffset; 977 FX_DWORD destOffset = pOther->m_FileOffset;
978 if (m_pFile == pOther->m_pFile && srcOffset == destOffset) { 978 if (m_pFile == pOther->m_pFile && srcOffset == destOffset) {
979 return TRUE; 979 return TRUE;
980 } 980 }
981 while (size > 0) { 981 while (size > 0) {
982 FX_DWORD actualSize = size > 1024 ? 1024 : size; 982 FX_DWORD actualSize = size > 1024 ? 1024 : size;
983 m_pFile->ReadBlock(srcBuf, srcOffset, actualSize); 983 m_pFile->ReadBlock(srcBuf, srcOffset, actualSize);
984 pOther->m_pFile->ReadBlock(destBuf, destOffset, actualSize); 984 pOther->m_pFile->ReadBlock(destBuf, destOffset, actualSize);
(...skipping 16 matching lines...) Expand all
1001 offset = m_FileOffset; 1001 offset = m_FileOffset;
1002 } 1002 }
1003 if (pOther->m_GenNum != (FX_DWORD) - 1) { 1003 if (pOther->m_GenNum != (FX_DWORD) - 1) {
1004 pFile = pOther->m_pFile; 1004 pFile = pOther->m_pFile;
1005 pBuf = m_pDataBuf; 1005 pBuf = m_pDataBuf;
1006 offset = pOther->m_FileOffset; 1006 offset = pOther->m_FileOffset;
1007 } 1007 }
1008 if (NULL == pBuf) { 1008 if (NULL == pBuf) {
1009 return FALSE; 1009 return FALSE;
1010 } 1010 }
1011 FX_BYTE srcBuf[1024]; 1011 uint8_t srcBuf[1024];
1012 FX_DWORD size = m_dwSize; 1012 FX_DWORD size = m_dwSize;
1013 while (size > 0) { 1013 while (size > 0) {
1014 FX_DWORD actualSize = size > 1024 ? 1024 : size; 1014 FX_DWORD actualSize = size > 1024 ? 1024 : size;
1015 m_pFile->ReadBlock(srcBuf, offset, actualSize); 1015 m_pFile->ReadBlock(srcBuf, offset, actualSize);
1016 if (FXSYS_memcmp32(srcBuf, pBuf, actualSize) != 0) { 1016 if (FXSYS_memcmp32(srcBuf, pBuf, actualSize) != 0) {
1017 return FALSE; 1017 return FALSE;
1018 } 1018 }
1019 pBuf += actualSize; 1019 pBuf += actualSize;
1020 size -= actualSize; 1020 size -= actualSize;
1021 offset += actualSize; 1021 offset += actualSize;
(...skipping 11 matching lines...) Expand all
1033 } 1033 }
1034 if (!pFS) { 1034 if (!pFS) {
1035 CPDF_StreamAcc acc; 1035 CPDF_StreamAcc acc;
1036 acc.LoadAllData(this, TRUE); 1036 acc.LoadAllData(this, TRUE);
1037 FX_DWORD streamSize = acc.GetSize(); 1037 FX_DWORD streamSize = acc.GetSize();
1038 return new CPDF_Stream(acc.DetachData(), streamSize, pCloneDict); 1038 return new CPDF_Stream(acc.DetachData(), streamSize, pCloneDict);
1039 } 1039 }
1040 CPDF_Stream* pObj = new CPDF_Stream(NULL, 0, NULL); 1040 CPDF_Stream* pObj = new CPDF_Stream(NULL, 0, NULL);
1041 CPDF_StreamFilter *pSF = GetStreamFilter(TRUE); 1041 CPDF_StreamFilter *pSF = GetStreamFilter(TRUE);
1042 if (pSF) { 1042 if (pSF) {
1043 FX_LPBYTE pBuf = FX_Alloc(FX_BYTE, 4096); 1043 FX_LPBYTE pBuf = FX_Alloc(uint8_t, 4096);
1044 FX_DWORD dwRead; 1044 FX_DWORD dwRead;
1045 do { 1045 do {
1046 dwRead = pSF->ReadBlock(pBuf, 4096); 1046 dwRead = pSF->ReadBlock(pBuf, 4096);
1047 if (dwRead) { 1047 if (dwRead) {
1048 pFS->WriteBlock(pBuf, dwRead); 1048 pFS->WriteBlock(pBuf, dwRead);
1049 } 1049 }
1050 } while (dwRead == 4096); 1050 } while (dwRead == 4096);
1051 pFS->Flush(); 1051 pFS->Flush();
1052 FX_Free(pBuf); 1052 FX_Free(pBuf);
1053 delete pSF; 1053 delete pSF;
(...skipping 25 matching lines...) Expand all
1079 m_dwSize = pStream->m_dwSize; 1079 m_dwSize = pStream->m_dwSize;
1080 m_pData = (FX_LPBYTE)pStream->m_pDataBuf; 1080 m_pData = (FX_LPBYTE)pStream->m_pDataBuf;
1081 return; 1081 return;
1082 } 1082 }
1083 FX_LPBYTE pSrcData; 1083 FX_LPBYTE pSrcData;
1084 FX_DWORD dwSrcSize = pStream->m_dwSize; 1084 FX_DWORD dwSrcSize = pStream->m_dwSize;
1085 if (dwSrcSize == 0) { 1085 if (dwSrcSize == 0) {
1086 return; 1086 return;
1087 } 1087 }
1088 if (!pStream->IsMemoryBased()) { 1088 if (!pStream->IsMemoryBased()) {
1089 pSrcData = m_pSrcData = FX_Alloc(FX_BYTE, dwSrcSize); 1089 pSrcData = m_pSrcData = FX_Alloc(uint8_t, dwSrcSize);
1090 if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) { 1090 if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) {
1091 return; 1091 return;
1092 } 1092 }
1093 } else { 1093 } else {
1094 pSrcData = pStream->m_pDataBuf; 1094 pSrcData = pStream->m_pDataBuf;
1095 } 1095 }
1096 FX_LPBYTE pDecryptedData; 1096 FX_LPBYTE pDecryptedData;
1097 FX_DWORD dwDecryptedSize; 1097 FX_DWORD dwDecryptedSize;
1098 if (pStream->m_pCryptoHandler) { 1098 if (pStream->m_pCryptoHandler) {
1099 CFX_BinaryBuf dest_buf; 1099 CFX_BinaryBuf dest_buf;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 return m_pStream->m_dwSize; 1158 return m_pStream->m_dwSize;
1159 } 1159 }
1160 FX_LPBYTE CPDF_StreamAcc::DetachData() 1160 FX_LPBYTE CPDF_StreamAcc::DetachData()
1161 { 1161 {
1162 if (m_bNewBuf) { 1162 if (m_bNewBuf) {
1163 FX_LPBYTE p = m_pData; 1163 FX_LPBYTE p = m_pData;
1164 m_pData = NULL; 1164 m_pData = NULL;
1165 m_dwSize = 0; 1165 m_dwSize = 0;
1166 return p; 1166 return p;
1167 } 1167 }
1168 FX_LPBYTE p = FX_Alloc(FX_BYTE, m_dwSize); 1168 FX_LPBYTE p = FX_Alloc(uint8_t, m_dwSize);
1169 FXSYS_memcpy32(p, m_pData, m_dwSize); 1169 FXSYS_memcpy32(p, m_pData, m_dwSize);
1170 return p; 1170 return p;
1171 } 1171 }
1172 void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum) 1172 void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum)
1173 { 1173 {
1174 m_pObjList = pDoc; 1174 m_pObjList = pDoc;
1175 m_RefObjNum = objnum; 1175 m_RefObjNum = objnum;
1176 } 1176 }
1177 CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser) 1177 CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser)
1178 { 1178 {
(...skipping 14 matching lines...) Expand all
1193 ((CPDF_Object*)value)->Destroy(); 1193 ((CPDF_Object*)value)->Destroy();
1194 } 1194 }
1195 } 1195 }
1196 CPDF_Object* CPDF_IndirectObjects::GetIndirectObject(FX_DWORD objnum, struct PAR SE_CONTEXT* pContext) 1196 CPDF_Object* CPDF_IndirectObjects::GetIndirectObject(FX_DWORD objnum, struct PAR SE_CONTEXT* pContext)
1197 { 1197 {
1198 if (objnum == 0) { 1198 if (objnum == 0) {
1199 return NULL; 1199 return NULL;
1200 } 1200 }
1201 FX_LPVOID value; 1201 FX_LPVOID value;
1202 { 1202 {
1203 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1203 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1204 if (((CPDF_Object*)value)->GetObjNum() == -1) { 1204 if (((CPDF_Object*)value)->GetObjNum() == -1) {
1205 return NULL; 1205 return NULL;
1206 } 1206 }
1207 return (CPDF_Object*)value; 1207 return (CPDF_Object*)value;
1208 } 1208 }
1209 } 1209 }
1210 CPDF_Object* pObj = NULL; 1210 CPDF_Object* pObj = NULL;
1211 if (m_pParser) { 1211 if (m_pParser) {
1212 pObj = m_pParser->ParseIndirectObject(this, objnum, pContext); 1212 pObj = m_pParser->ParseIndirectObject(this, objnum, pContext);
1213 } 1213 }
1214 if (pObj == NULL) { 1214 if (pObj == NULL) {
1215 return NULL; 1215 return NULL;
1216 } 1216 }
1217 pObj->m_ObjNum = objnum; 1217 pObj->m_ObjNum = objnum;
1218 if (m_LastObjNum < objnum) { 1218 if (m_LastObjNum < objnum) {
1219 m_LastObjNum = objnum; 1219 m_LastObjNum = objnum;
1220 } 1220 }
1221 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1221 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1222 if (value) { 1222 if (value) {
1223 ((CPDF_Object *)value)->Destroy(); 1223 ((CPDF_Object *)value)->Destroy();
1224 } 1224 }
1225 } 1225 }
1226 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pObj); 1226 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)objnum, pObj);
1227 return pObj; 1227 return pObj;
1228 } 1228 }
1229 int CPDF_IndirectObjects::GetIndirectType(FX_DWORD objnum) 1229 int CPDF_IndirectObjects::GetIndirectType(FX_DWORD objnum)
1230 { 1230 {
1231 FX_LPVOID value; 1231 FX_LPVOID value;
1232 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1232 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1233 return ((CPDF_Object*)value)->GetType(); 1233 return ((CPDF_Object*)value)->GetType();
1234 } 1234 }
1235 if (m_pParser) { 1235 if (m_pParser) {
1236 PARSE_CONTEXT context; 1236 PARSE_CONTEXT context;
1237 FXSYS_memset32(&context, 0, sizeof(PARSE_CONTEXT)); 1237 FXSYS_memset32(&context, 0, sizeof(PARSE_CONTEXT));
1238 context.m_Flags = PDFPARSE_TYPEONLY; 1238 context.m_Flags = PDFPARSE_TYPEONLY;
1239 return (int)(FX_UINTPTR)m_pParser->ParseIndirectObject(this, objnum, &co ntext); 1239 return (int)(uintptr_t)m_pParser->ParseIndirectObject(this, objnum, &con text);
1240 } 1240 }
1241 return 0; 1241 return 0;
1242 } 1242 }
1243 FX_DWORD CPDF_IndirectObjects::AddIndirectObject(CPDF_Object* pObj) 1243 FX_DWORD CPDF_IndirectObjects::AddIndirectObject(CPDF_Object* pObj)
1244 { 1244 {
1245 if (pObj->m_ObjNum) { 1245 if (pObj->m_ObjNum) {
1246 return pObj->m_ObjNum; 1246 return pObj->m_ObjNum;
1247 } 1247 }
1248 m_LastObjNum ++; 1248 m_LastObjNum ++;
1249 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)m_LastObjNum, pObj); 1249 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)m_LastObjNum, pObj);
1250 pObj->m_ObjNum = m_LastObjNum; 1250 pObj->m_ObjNum = m_LastObjNum;
1251 return m_LastObjNum; 1251 return m_LastObjNum;
1252 } 1252 }
1253 void CPDF_IndirectObjects::ReleaseIndirectObject(FX_DWORD objnum) 1253 void CPDF_IndirectObjects::ReleaseIndirectObject(FX_DWORD objnum)
1254 { 1254 {
1255 FX_LPVOID value; 1255 FX_LPVOID value;
1256 if (!m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1256 if (!m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1257 return; 1257 return;
1258 } 1258 }
1259 if (((CPDF_Object*)value)->GetObjNum() == -1) { 1259 if (((CPDF_Object*)value)->GetObjNum() == -1) {
1260 return; 1260 return;
1261 } 1261 }
1262 ((CPDF_Object*)value)->Destroy(); 1262 ((CPDF_Object*)value)->Destroy();
1263 m_IndirectObjs.RemoveKey((FX_LPVOID)(FX_UINTPTR)objnum); 1263 m_IndirectObjs.RemoveKey((FX_LPVOID)(uintptr_t)objnum);
1264 } 1264 }
1265 void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pO bj) 1265 void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pO bj)
1266 { 1266 {
1267 if (objnum == 0 || pObj == NULL) { 1267 if (objnum == 0 || pObj == NULL) {
1268 return; 1268 return;
1269 } 1269 }
1270 FX_LPVOID value = NULL; 1270 FX_LPVOID value = NULL;
1271 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1271 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1272 if (value) 1272 if (value)
1273 { 1273 {
1274 if (pObj->GetGenNum() <= ((CPDF_Object*)value)->GetGenNum()) 1274 if (pObj->GetGenNum() <= ((CPDF_Object*)value)->GetGenNum())
1275 return; 1275 return;
1276 else 1276 else
1277 ((CPDF_Object*)value)->Destroy(); 1277 ((CPDF_Object*)value)->Destroy();
1278 } 1278 }
1279 } 1279 }
1280 pObj->m_ObjNum = objnum; 1280 pObj->m_ObjNum = objnum;
1281 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pObj); 1281 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)objnum, pObj);
1282 if (m_LastObjNum < objnum) { 1282 if (m_LastObjNum < objnum) {
1283 m_LastObjNum = objnum; 1283 m_LastObjNum = objnum;
1284 } 1284 }
1285 } 1285 }
1286 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const 1286 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const
1287 { 1287 {
1288 return m_LastObjNum; 1288 return m_LastObjNum;
1289 } 1289 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp ('k') | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698