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

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

Issue 1177483002: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
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 15 matching lines...) Expand all
1000 pBuf = m_pDataBuf; 1000 pBuf = m_pDataBuf;
1001 offset = pOther->m_FileOffset; 1001 offset = pOther->m_FileOffset;
1002 } else if (m_GenNum != (FX_DWORD) - 1) { 1002 } else if (m_GenNum != (FX_DWORD) - 1) {
1003 pFile = m_pFile; 1003 pFile = m_pFile;
1004 pBuf = pOther->m_pDataBuf; 1004 pBuf = pOther->m_pDataBuf;
1005 offset = m_FileOffset; 1005 offset = m_FileOffset;
1006 } 1006 }
1007 if (NULL == pBuf) { 1007 if (NULL == pBuf) {
1008 return FALSE; 1008 return FALSE;
1009 } 1009 }
1010 FX_BYTE srcBuf[1024]; 1010 uint8_t srcBuf[1024];
1011 FX_DWORD size = m_dwSize; 1011 FX_DWORD size = m_dwSize;
1012 while (size > 0) { 1012 while (size > 0) {
1013 FX_DWORD actualSize = std::min(size, 1024U); 1013 FX_DWORD actualSize = std::min(size, 1024U);
1014 pFile->ReadBlock(srcBuf, offset, actualSize); 1014 pFile->ReadBlock(srcBuf, offset, actualSize);
1015 if (FXSYS_memcmp32(srcBuf, pBuf, actualSize) != 0) { 1015 if (FXSYS_memcmp32(srcBuf, pBuf, actualSize) != 0) {
1016 return FALSE; 1016 return FALSE;
1017 } 1017 }
1018 pBuf += actualSize; 1018 pBuf += actualSize;
1019 size -= actualSize; 1019 size -= actualSize;
1020 offset += actualSize; 1020 offset += actualSize;
(...skipping 11 matching lines...) Expand all
1032 } 1032 }
1033 if (!pFS) { 1033 if (!pFS) {
1034 CPDF_StreamAcc acc; 1034 CPDF_StreamAcc acc;
1035 acc.LoadAllData(this, TRUE); 1035 acc.LoadAllData(this, TRUE);
1036 FX_DWORD streamSize = acc.GetSize(); 1036 FX_DWORD streamSize = acc.GetSize();
1037 return new CPDF_Stream(acc.DetachData(), streamSize, pCloneDict); 1037 return new CPDF_Stream(acc.DetachData(), streamSize, pCloneDict);
1038 } 1038 }
1039 CPDF_Stream* pObj = new CPDF_Stream(NULL, 0, NULL); 1039 CPDF_Stream* pObj = new CPDF_Stream(NULL, 0, NULL);
1040 CPDF_StreamFilter *pSF = GetStreamFilter(TRUE); 1040 CPDF_StreamFilter *pSF = GetStreamFilter(TRUE);
1041 if (pSF) { 1041 if (pSF) {
1042 FX_LPBYTE pBuf = FX_Alloc(FX_BYTE, 4096); 1042 FX_LPBYTE pBuf = FX_Alloc(uint8_t, 4096);
1043 FX_DWORD dwRead; 1043 FX_DWORD dwRead;
1044 do { 1044 do {
1045 dwRead = pSF->ReadBlock(pBuf, 4096); 1045 dwRead = pSF->ReadBlock(pBuf, 4096);
1046 if (dwRead) { 1046 if (dwRead) {
1047 pFS->WriteBlock(pBuf, dwRead); 1047 pFS->WriteBlock(pBuf, dwRead);
1048 } 1048 }
1049 } while (dwRead == 4096); 1049 } while (dwRead == 4096);
1050 pFS->Flush(); 1050 pFS->Flush();
1051 FX_Free(pBuf); 1051 FX_Free(pBuf);
1052 delete pSF; 1052 delete pSF;
(...skipping 25 matching lines...) Expand all
1078 m_dwSize = pStream->m_dwSize; 1078 m_dwSize = pStream->m_dwSize;
1079 m_pData = (FX_LPBYTE)pStream->m_pDataBuf; 1079 m_pData = (FX_LPBYTE)pStream->m_pDataBuf;
1080 return; 1080 return;
1081 } 1081 }
1082 FX_LPBYTE pSrcData; 1082 FX_LPBYTE pSrcData;
1083 FX_DWORD dwSrcSize = pStream->m_dwSize; 1083 FX_DWORD dwSrcSize = pStream->m_dwSize;
1084 if (dwSrcSize == 0) { 1084 if (dwSrcSize == 0) {
1085 return; 1085 return;
1086 } 1086 }
1087 if (!pStream->IsMemoryBased()) { 1087 if (!pStream->IsMemoryBased()) {
1088 pSrcData = m_pSrcData = FX_Alloc(FX_BYTE, dwSrcSize); 1088 pSrcData = m_pSrcData = FX_Alloc(uint8_t, dwSrcSize);
1089 if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) { 1089 if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) {
1090 return; 1090 return;
1091 } 1091 }
1092 } else { 1092 } else {
1093 pSrcData = pStream->m_pDataBuf; 1093 pSrcData = pStream->m_pDataBuf;
1094 } 1094 }
1095 FX_LPBYTE pDecryptedData; 1095 FX_LPBYTE pDecryptedData;
1096 FX_DWORD dwDecryptedSize; 1096 FX_DWORD dwDecryptedSize;
1097 if (pStream->m_pCryptoHandler) { 1097 if (pStream->m_pCryptoHandler) {
1098 CFX_BinaryBuf dest_buf; 1098 CFX_BinaryBuf dest_buf;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1157 return m_pStream->m_dwSize; 1157 return m_pStream->m_dwSize;
1158 } 1158 }
1159 FX_LPBYTE CPDF_StreamAcc::DetachData() 1159 FX_LPBYTE CPDF_StreamAcc::DetachData()
1160 { 1160 {
1161 if (m_bNewBuf) { 1161 if (m_bNewBuf) {
1162 FX_LPBYTE p = m_pData; 1162 FX_LPBYTE p = m_pData;
1163 m_pData = NULL; 1163 m_pData = NULL;
1164 m_dwSize = 0; 1164 m_dwSize = 0;
1165 return p; 1165 return p;
1166 } 1166 }
1167 FX_LPBYTE p = FX_Alloc(FX_BYTE, m_dwSize); 1167 FX_LPBYTE p = FX_Alloc(uint8_t, m_dwSize);
1168 FXSYS_memcpy32(p, m_pData, m_dwSize); 1168 FXSYS_memcpy32(p, m_pData, m_dwSize);
1169 return p; 1169 return p;
1170 } 1170 }
1171 void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum) 1171 void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum)
1172 { 1172 {
1173 m_pObjList = pDoc; 1173 m_pObjList = pDoc;
1174 m_RefObjNum = objnum; 1174 m_RefObjNum = objnum;
1175 } 1175 }
1176 CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser) 1176 CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser)
1177 { 1177 {
(...skipping 14 matching lines...) Expand all
1192 ((CPDF_Object*)value)->Destroy(); 1192 ((CPDF_Object*)value)->Destroy();
1193 } 1193 }
1194 } 1194 }
1195 CPDF_Object* CPDF_IndirectObjects::GetIndirectObject(FX_DWORD objnum, struct PAR SE_CONTEXT* pContext) 1195 CPDF_Object* CPDF_IndirectObjects::GetIndirectObject(FX_DWORD objnum, struct PAR SE_CONTEXT* pContext)
1196 { 1196 {
1197 if (objnum == 0) { 1197 if (objnum == 0) {
1198 return NULL; 1198 return NULL;
1199 } 1199 }
1200 FX_LPVOID value; 1200 FX_LPVOID value;
1201 { 1201 {
1202 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1202 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1203 if (((CPDF_Object*)value)->GetObjNum() == -1) { 1203 if (((CPDF_Object*)value)->GetObjNum() == -1) {
1204 return NULL; 1204 return NULL;
1205 } 1205 }
1206 return (CPDF_Object*)value; 1206 return (CPDF_Object*)value;
1207 } 1207 }
1208 } 1208 }
1209 CPDF_Object* pObj = NULL; 1209 CPDF_Object* pObj = NULL;
1210 if (m_pParser) { 1210 if (m_pParser) {
1211 pObj = m_pParser->ParseIndirectObject(this, objnum, pContext); 1211 pObj = m_pParser->ParseIndirectObject(this, objnum, pContext);
1212 } 1212 }
1213 if (pObj == NULL) { 1213 if (pObj == NULL) {
1214 return NULL; 1214 return NULL;
1215 } 1215 }
1216 pObj->m_ObjNum = objnum; 1216 pObj->m_ObjNum = objnum;
1217 if (m_LastObjNum < objnum) { 1217 if (m_LastObjNum < objnum) {
1218 m_LastObjNum = objnum; 1218 m_LastObjNum = objnum;
1219 } 1219 }
1220 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1220 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1221 if (value) { 1221 if (value) {
1222 ((CPDF_Object *)value)->Destroy(); 1222 ((CPDF_Object *)value)->Destroy();
1223 } 1223 }
1224 } 1224 }
1225 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pObj); 1225 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)objnum, pObj);
1226 return pObj; 1226 return pObj;
1227 } 1227 }
1228 int CPDF_IndirectObjects::GetIndirectType(FX_DWORD objnum) 1228 int CPDF_IndirectObjects::GetIndirectType(FX_DWORD objnum)
1229 { 1229 {
1230 FX_LPVOID value; 1230 FX_LPVOID value;
1231 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1231 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1232 return ((CPDF_Object*)value)->GetType(); 1232 return ((CPDF_Object*)value)->GetType();
1233 } 1233 }
1234 if (m_pParser) { 1234 if (m_pParser) {
1235 PARSE_CONTEXT context; 1235 PARSE_CONTEXT context;
1236 FXSYS_memset32(&context, 0, sizeof(PARSE_CONTEXT)); 1236 FXSYS_memset32(&context, 0, sizeof(PARSE_CONTEXT));
1237 context.m_Flags = PDFPARSE_TYPEONLY; 1237 context.m_Flags = PDFPARSE_TYPEONLY;
1238 return (int)(FX_UINTPTR)m_pParser->ParseIndirectObject(this, objnum, &co ntext); 1238 return (int)(uintptr_t)m_pParser->ParseIndirectObject(this, objnum, &con text);
1239 } 1239 }
1240 return 0; 1240 return 0;
1241 } 1241 }
1242 FX_DWORD CPDF_IndirectObjects::AddIndirectObject(CPDF_Object* pObj) 1242 FX_DWORD CPDF_IndirectObjects::AddIndirectObject(CPDF_Object* pObj)
1243 { 1243 {
1244 if (pObj->m_ObjNum) { 1244 if (pObj->m_ObjNum) {
1245 return pObj->m_ObjNum; 1245 return pObj->m_ObjNum;
1246 } 1246 }
1247 m_LastObjNum ++; 1247 m_LastObjNum ++;
1248 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)m_LastObjNum, pObj); 1248 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)m_LastObjNum, pObj);
1249 pObj->m_ObjNum = m_LastObjNum; 1249 pObj->m_ObjNum = m_LastObjNum;
1250 return m_LastObjNum; 1250 return m_LastObjNum;
1251 } 1251 }
1252 void CPDF_IndirectObjects::ReleaseIndirectObject(FX_DWORD objnum) 1252 void CPDF_IndirectObjects::ReleaseIndirectObject(FX_DWORD objnum)
1253 { 1253 {
1254 FX_LPVOID value; 1254 FX_LPVOID value;
1255 if (!m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1255 if (!m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1256 return; 1256 return;
1257 } 1257 }
1258 if (((CPDF_Object*)value)->GetObjNum() == -1) { 1258 if (((CPDF_Object*)value)->GetObjNum() == -1) {
1259 return; 1259 return;
1260 } 1260 }
1261 ((CPDF_Object*)value)->Destroy(); 1261 ((CPDF_Object*)value)->Destroy();
1262 m_IndirectObjs.RemoveKey((FX_LPVOID)(FX_UINTPTR)objnum); 1262 m_IndirectObjs.RemoveKey((FX_LPVOID)(uintptr_t)objnum);
1263 } 1263 }
1264 void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pO bj) 1264 void CPDF_IndirectObjects::InsertIndirectObject(FX_DWORD objnum, CPDF_Object* pO bj)
1265 { 1265 {
1266 if (objnum == 0 || pObj == NULL) { 1266 if (objnum == 0 || pObj == NULL) {
1267 return; 1267 return;
1268 } 1268 }
1269 FX_LPVOID value = NULL; 1269 FX_LPVOID value = NULL;
1270 if (m_IndirectObjs.Lookup((FX_LPVOID)(FX_UINTPTR)objnum, value)) { 1270 if (m_IndirectObjs.Lookup((FX_LPVOID)(uintptr_t)objnum, value)) {
1271 if (value) 1271 if (value)
1272 { 1272 {
1273 if (pObj->GetGenNum() <= ((CPDF_Object*)value)->GetGenNum()) 1273 if (pObj->GetGenNum() <= ((CPDF_Object*)value)->GetGenNum())
1274 return; 1274 return;
1275 else 1275 else
1276 ((CPDF_Object*)value)->Destroy(); 1276 ((CPDF_Object*)value)->Destroy();
1277 } 1277 }
1278 } 1278 }
1279 pObj->m_ObjNum = objnum; 1279 pObj->m_ObjNum = objnum;
1280 m_IndirectObjs.SetAt((FX_LPVOID)(FX_UINTPTR)objnum, pObj); 1280 m_IndirectObjs.SetAt((FX_LPVOID)(uintptr_t)objnum, pObj);
1281 if (m_LastObjNum < objnum) { 1281 if (m_LastObjNum < objnum) {
1282 m_LastObjNum = objnum; 1282 m_LastObjNum = objnum;
1283 } 1283 }
1284 } 1284 }
1285 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const 1285 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const
1286 { 1286 {
1287 return m_LastObjNum; 1287 return m_LastObjNum;
1288 } 1288 }
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