Chromium Code Reviews| 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 "../../include/javascript/JavaScript.h" | 7 #include "../../include/javascript/JavaScript.h" |
| 8 #include "../../include/javascript/IJavaScript.h" | 8 #include "../../include/javascript/IJavaScript.h" |
| 9 #include "../../include/javascript/JS_Define.h" | 9 #include "../../include/javascript/JS_Define.h" |
| 10 #include "../../include/javascript/JS_Object.h" | 10 #include "../../include/javascript/JS_Object.h" |
| 11 #include "../../include/javascript/JS_Value.h" | 11 #include "../../include/javascript/JS_Value.h" |
| 12 #include "../../include/javascript/Document.h" | 12 #include "../../include/javascript/Document.h" |
| 13 #include "../../include/javascript/JS_EventHandler.h" | 13 #include "../../include/javascript/JS_EventHandler.h" |
| 14 #include "../../include/javascript/JS_Context.h" | 14 #include "../../include/javascript/JS_Context.h" |
| 15 #include "../../include/javascript/JS_Runtime.h" | 15 #include "../../include/javascript/JS_Runtime.h" |
| 16 #include "../../include/javascript/app.h" | 16 #include "../../include/javascript/app.h" |
| 17 #include "../../include/javascript/Field.h" | 17 #include "../../include/javascript/Field.h" |
| 18 #include "../../include/javascript/Icon.h" | 18 #include "../../include/javascript/Icon.h" |
| 19 #include "../../include/javascript/Field.h" | 19 #include "../../include/javascript/Field.h" |
|
Lei Zhang
2015/02/28 02:50:49
care to remove this duplicate #include while we ar
Tom Sepez
2015/03/02 19:03:44
You betcha. I'm going to hold off on sorting thes
| |
| 20 #include "../../include/javascript/resource.h" | |
| 20 | 21 |
| 21 #include "../../../third_party/base/numerics/safe_math.h" | 22 #include "../../../third_party/base/numerics/safe_math.h" |
| 22 | 23 |
| 23 static v8::Isolate* GetIsolate(IFXJS_Context* cc) | 24 static v8::Isolate* GetIsolate(IFXJS_Context* cc) |
| 24 { | 25 { |
| 25 CJS_Context* pContext = (CJS_Context *)cc; | 26 CJS_Context* pContext = (CJS_Context *)cc; |
| 26 ASSERT(pContext != NULL); | 27 ASSERT(pContext != NULL); |
| 27 | 28 |
| 28 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 29 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| 29 ASSERT(pRuntime != NULL); | 30 ASSERT(pRuntime != NULL); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 185 } | 186 } |
| 186 } | 187 } |
| 187 | 188 |
| 188 m_DelayData.RemoveAll(); | 189 m_DelayData.RemoveAll(); |
| 189 m_DelayAnnotData.RemoveAll(); | 190 m_DelayAnnotData.RemoveAll(); |
| 190 } | 191 } |
| 191 | 192 |
| 192 //the total number of fileds in document. | 193 //the total number of fileds in document. |
| 193 FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString & sError) | 194 FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString & sError) |
| 194 { | 195 { |
| 195 » if (!vp.IsGetting()) return FALSE; | 196 » if (vp.IsSetting()) { |
| 196 | 197 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 197 » ASSERT(m_pDocument != NULL); | 198 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); |
| 198 | 199 » » return FALSE; |
| 200 » } | |
| 199 CPDFSDK_InterForm *pInterForm = m_pDocument->GetInterForm(); | 201 CPDFSDK_InterForm *pInterForm = m_pDocument->GetInterForm(); |
| 200 ASSERT(pInterForm != NULL); | |
| 201 | |
| 202 CPDF_InterForm *pPDFForm = pInterForm->GetInterForm(); | 202 CPDF_InterForm *pPDFForm = pInterForm->GetInterForm(); |
| 203 ASSERT(pPDFForm != NULL); | |
| 204 | |
| 205 vp << (int)pPDFForm->CountFields(); | 203 vp << (int)pPDFForm->CountFields(); |
| 206 | |
| 207 return TRUE; | 204 return TRUE; |
| 208 } | 205 } |
| 209 | 206 |
| 210 FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sE rror) | 207 FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sE rror) |
| 211 { | 208 { |
| 212 ASSERT(m_pDocument != NULL); | 209 ASSERT(m_pDocument != NULL); |
| 213 | 210 |
| 214 if (vp.IsGetting()) | 211 if (vp.IsGetting()) |
| 215 { | 212 { |
| 216 if (m_pDocument->GetChangeMark()) | 213 if (m_pDocument->GetChangeMark()) |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 871 CFX_WideString cwTitle = pDictionary->GetUnicodeText("T itle"); | 868 CFX_WideString cwTitle = pDictionary->GetUnicodeText("T itle"); |
| 872 CFX_WideString cwSubject = pDictionary->GetUnicodeText("S ubject"); | 869 CFX_WideString cwSubject = pDictionary->GetUnicodeText("S ubject"); |
| 873 CFX_WideString cwKeywords = pDictionary->GetUnicodeText("K eywords"); | 870 CFX_WideString cwKeywords = pDictionary->GetUnicodeText("K eywords"); |
| 874 CFX_WideString cwCreator = pDictionary->GetUnicodeText("C reator"); | 871 CFX_WideString cwCreator = pDictionary->GetUnicodeText("C reator"); |
| 875 CFX_WideString cwProducer = pDictionary->GetUnicodeText("P roducer"); | 872 CFX_WideString cwProducer = pDictionary->GetUnicodeText("P roducer"); |
| 876 CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationD ate"); | 873 CFX_WideString cwCreationDate = pDictionary->GetUnicodeText("CreationD ate"); |
| 877 CFX_WideString cwModDate = pDictionary->GetUnicodeText("M odDate"); | 874 CFX_WideString cwModDate = pDictionary->GetUnicodeText("M odDate"); |
| 878 CFX_WideString cwTrapped = pDictionary->GetUnicodeText("T rapped"); | 875 CFX_WideString cwTrapped = pDictionary->GetUnicodeText("T rapped"); |
| 879 | 876 |
| 880 v8::Isolate* isolate = GetIsolate(cc); | 877 v8::Isolate* isolate = GetIsolate(cc); |
| 881 » if (!vp.IsSetting()) | 878 » if (vp.IsGetting()) |
| 882 { | 879 { |
| 883 CJS_Context* pContext = (CJS_Context *)cc; | 880 CJS_Context* pContext = (CJS_Context *)cc; |
| 884 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); | 881 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| 885 | 882 |
| 886 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); | 883 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, -1); |
| 887 | 884 |
| 888 JS_PutObjectString(isolate,pObj, L"Author", cwAuthor); | 885 JS_PutObjectString(isolate,pObj, L"Author", cwAuthor); |
| 889 JS_PutObjectString(isolate,pObj, L"Title", cwTitle); | 886 JS_PutObjectString(isolate,pObj, L"Title", cwTitle); |
| 890 JS_PutObjectString(isolate,pObj, L"Subject", cwSubject); | 887 JS_PutObjectString(isolate,pObj, L"Subject", cwSubject); |
| 891 JS_PutObjectString(isolate,pObj, L"Keywords", cwKeywords); | 888 JS_PutObjectString(isolate,pObj, L"Keywords", cwKeywords); |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1128 CFX_WideString cstitle; | 1125 CFX_WideString cstitle; |
| 1129 vp >> cstitle; | 1126 vp >> cstitle; |
| 1130 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); | 1127 pDictionary->SetAtString("Title", PDF_EncodeText(cstitle)); |
| 1131 m_pDocument->SetChangeMark(); | 1128 m_pDocument->SetChangeMark(); |
| 1132 return TRUE; | 1129 return TRUE; |
| 1133 } | 1130 } |
| 1134 } | 1131 } |
| 1135 | 1132 |
| 1136 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) | 1133 FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) |
| 1137 { | 1134 { |
| 1138 » if (vp.IsGetting()) | 1135 » if (vp.IsSetting()) { |
| 1139 » { | 1136 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1140 » » ASSERT(m_pDocument != NULL); | 1137 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); |
| 1141 » » vp << m_pDocument->GetPageCount(); | |
| 1142 » » return TRUE; | |
| 1143 » } | |
| 1144 » else | |
| 1145 » { | |
| 1146 return FALSE; | 1138 return FALSE; |
| 1147 } | 1139 } |
| 1140 vp << m_pDocument->GetPageCount(); | |
| 1141 return TRUE; | |
| 1148 } | 1142 } |
| 1149 | 1143 |
| 1150 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) | 1144 FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) |
| 1151 { | 1145 { |
| 1152 //In Chrome case,should always return true. | 1146 //In Chrome case,should always return true. |
| 1153 vp << TRUE; | 1147 vp << TRUE; |
| 1154 return TRUE; | 1148 return TRUE; |
| 1155 } | 1149 } |
| 1156 | 1150 |
| 1157 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) | 1151 FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError) |
| 1158 { | 1152 { |
| 1159 » if (!vp.IsGetting())return FALSE; | 1153 » if (vp.IsSetting()) { |
| 1160 | 1154 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1155 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | |
| 1156 » » return FALSE; | |
| 1157 » } | |
| 1161 vp << 0; | 1158 vp << 0; |
| 1162 return TRUE; | 1159 return TRUE; |
| 1163 } | 1160 } |
| 1164 | 1161 |
| 1165 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) | 1162 FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) |
| 1166 { | 1163 { |
| 1167 return TRUE; | 1164 return TRUE; |
| 1168 } | 1165 } |
| 1169 | 1166 |
| 1170 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) | 1167 FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1206 vp >> bCalculate; | 1203 vp >> bCalculate; |
| 1207 | 1204 |
| 1208 pInterForm->EnableCalculate(bCalculate); | 1205 pInterForm->EnableCalculate(bCalculate); |
| 1209 } | 1206 } |
| 1210 | 1207 |
| 1211 return TRUE; | 1208 return TRUE; |
| 1212 } | 1209 } |
| 1213 | 1210 |
| 1214 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, JS_Erro rString& sError) | 1211 FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, JS_Erro rString& sError) |
| 1215 { | 1212 { |
| 1216 » if (!vp.IsGetting()) | 1213 » if (vp.IsSetting()) { |
| 1214 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
| 1215 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | |
| 1217 return FALSE; | 1216 return FALSE; |
| 1218 | 1217 » } |
| 1219 CFX_WideString wsFilePath = m_pDocument->GetPath(); | 1218 CFX_WideString wsFilePath = m_pDocument->GetPath(); |
| 1220 | |
| 1221 FX_INT32 i = wsFilePath.GetLength() - 1; | 1219 FX_INT32 i = wsFilePath.GetLength() - 1; |
| 1222 for ( ; i >= 0; i-- ) | 1220 for ( ; i >= 0; i-- ) |
| 1223 { | 1221 { |
| 1224 if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' ) | 1222 if ( wsFilePath.GetAt( i ) == L'\\' || wsFilePath.GetAt( i ) == L'/' ) |
| 1225 break; | 1223 break; |
| 1226 } | 1224 } |
| 1227 if ( i >= 0 && i < wsFilePath.GetLength() - 1 ) | 1225 if ( i >= 0 && i < wsFilePath.GetLength() - 1 ) |
| 1228 { | 1226 { |
| 1229 vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 ) ; | 1227 vp << ( wsFilePath.GetBuffer( wsFilePath.GetLength() ) + i + 1 ) ; |
| 1230 }else{ | 1228 }else{ |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1275 | 1273 |
| 1276 cbFrom.ReleaseBuffer(); | 1274 cbFrom.ReleaseBuffer(); |
| 1277 CFX_WideString cbRet = CFX_WideString(pResult); | 1275 CFX_WideString cbRet = CFX_WideString(pResult); |
| 1278 free(pResult); | 1276 free(pResult); |
| 1279 pResult = NULL; | 1277 pResult = NULL; |
| 1280 return cbRet; | 1278 return cbRet; |
| 1281 } | 1279 } |
| 1282 | 1280 |
| 1283 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sEr ror) | 1281 FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sEr ror) |
| 1284 { | 1282 { |
| 1285 » if (!vp.IsGetting()) return FALSE; | 1283 » if (vp.IsSetting()) { |
| 1286 | 1284 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1285 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | |
| 1286 » » return FALSE; | |
| 1287 » } | |
| 1287 vp << app::SysPathToPDFPath(m_pDocument->GetPath()); | 1288 vp << app::SysPathToPDFPath(m_pDocument->GetPath()); |
| 1288 | |
| 1289 return TRUE; | 1289 return TRUE; |
| 1290 } | 1290 } |
| 1291 | 1291 |
| 1292 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorS tring& sError) | 1292 FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorS tring& sError) |
| 1293 { | 1293 { |
| 1294 return TRUE; | 1294 return TRUE; |
| 1295 } | 1295 } |
| 1296 | 1296 |
| 1297 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) | 1297 FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& s Error) |
| 1298 { | 1298 { |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1484 IconElement* pNewIcon = new IconElement(); | 1484 IconElement* pNewIcon = new IconElement(); |
| 1485 pNewIcon->IconName = swIconName; | 1485 pNewIcon->IconName = swIconName; |
| 1486 pNewIcon->NextIcon = NULL; | 1486 pNewIcon->NextIcon = NULL; |
| 1487 pNewIcon->IconStream = pIcon; | 1487 pNewIcon->IconStream = pIcon; |
| 1488 m_pIconTree->InsertIconElement(pNewIcon); | 1488 m_pIconTree->InsertIconElement(pNewIcon); |
| 1489 return TRUE; | 1489 return TRUE; |
| 1490 } | 1490 } |
| 1491 | 1491 |
| 1492 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sE rror) | 1492 FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sE rror) |
| 1493 { | 1493 { |
| 1494 » if (vp.IsSetting()) | 1494 » if (vp.IsSetting()) { |
| 1495 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); | |
| 1496 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); | |
| 1495 return FALSE; | 1497 return FALSE; |
| 1498 } | |
| 1496 | 1499 |
| 1497 if (!m_pIconTree) | 1500 if (!m_pIconTree) |
| 1498 { | 1501 { |
| 1499 vp.SetNull(); | 1502 vp.SetNull(); |
| 1500 return TRUE; | 1503 return TRUE; |
| 1501 } | 1504 } |
| 1502 | 1505 |
| 1503 CJS_Array Icons(m_isolate); | 1506 CJS_Array Icons(m_isolate); |
| 1504 IconElement* pIconElement = NULL; | 1507 IconElement* pIconElement = NULL; |
| 1505 int iIconTreeLength = m_pIconTree->GetLength(); | 1508 int iIconTreeLength = m_pIconTree->GetLength(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1612 | 1615 |
| 1613 int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; | 1616 int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; |
| 1614 int nWordNo = params.GetSize() > 1 ? (int)params[1] : 0; | 1617 int nWordNo = params.GetSize() > 1 ? (int)params[1] : 0; |
| 1615 bool bStrip = params.GetSize() > 2 ? (bool)params[2] : true; | 1618 bool bStrip = params.GetSize() > 2 ? (bool)params[2] : true; |
| 1616 | 1619 |
| 1617 CPDF_Document* pDocument = m_pDocument->GetDocument(); | 1620 CPDF_Document* pDocument = m_pDocument->GetDocument(); |
| 1618 if (!pDocument) return FALSE; | 1621 if (!pDocument) return FALSE; |
| 1619 | 1622 |
| 1620 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) | 1623 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) |
| 1621 { | 1624 { |
| 1622 » » //sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 1625 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1626 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | |
| 1623 return FALSE; | 1627 return FALSE; |
| 1624 } | 1628 } |
| 1625 | 1629 |
| 1626 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1630 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
| 1627 if (!pPageDict) return FALSE; | 1631 if (!pPageDict) return FALSE; |
| 1628 | 1632 |
| 1629 CPDF_Page page; | 1633 CPDF_Page page; |
| 1630 page.Load(pDocument, pPageDict); | 1634 page.Load(pDocument, pPageDict); |
| 1631 page.StartParse(); | 1635 page.StartParse(); |
| 1632 page.ParseContent(); | 1636 page.ParseContent(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1681 | 1685 |
| 1682 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; | 1686 if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) return FALSE; |
| 1683 | 1687 |
| 1684 int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; | 1688 int nPageNo = params.GetSize() > 0 ? (int)params[0] : 0; |
| 1685 | 1689 |
| 1686 CPDF_Document* pDocument = m_pDocument->GetDocument(); | 1690 CPDF_Document* pDocument = m_pDocument->GetDocument(); |
| 1687 ASSERT(pDocument != NULL); | 1691 ASSERT(pDocument != NULL); |
| 1688 | 1692 |
| 1689 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) | 1693 if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) |
| 1690 { | 1694 { |
| 1691 » » //sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); | 1695 » » CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| 1696 » » sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); | |
| 1692 return FALSE; | 1697 return FALSE; |
| 1693 } | 1698 } |
| 1694 | 1699 |
| 1695 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); | 1700 CPDF_Dictionary* pPageDict = pDocument->GetPage(nPageNo); |
| 1696 if (!pPageDict) return FALSE; | 1701 if (!pPageDict) return FALSE; |
| 1697 | 1702 |
| 1698 CPDF_Page page; | 1703 CPDF_Page page; |
| 1699 page.Load(pDocument, pPageDict); | 1704 page.Load(pDocument, pPageDict); |
| 1700 page.StartParse(); | 1705 page.StartParse(); |
| 1701 page.ParseContent(); | 1706 page.ParseContent(); |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1945 | 1950 |
| 1946 void Document::DoAnnotDelay() | 1951 void Document::DoAnnotDelay() |
| 1947 { | 1952 { |
| 1948 CFX_DWordArray DelArray; | 1953 CFX_DWordArray DelArray; |
| 1949 | 1954 |
| 1950 for (int j=DelArray.GetSize()-1; j>=0; j--) | 1955 for (int j=DelArray.GetSize()-1; j>=0; j--) |
| 1951 { | 1956 { |
| 1952 m_DelayData.RemoveAt(DelArray[j]); | 1957 m_DelayData.RemoveAt(DelArray[j]); |
| 1953 } | 1958 } |
| 1954 } | 1959 } |
| OLD | NEW |