diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
index 97e0d6f..73ae71c 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
@@ -1027,26 +1027,21 @@
     } else {
         m_Trailers.Add((CPDF_Dictionary*)pStream->GetDict()->Clone());
     }
-    FX_DWORD nSegs = 0;
-    std::vector <std::pair <FX_INT32, FX_INT32>> arrIndex;
+    std::vector<std::pair<FX_INT32, FX_INT32> > arrIndex;
     CPDF_Array* pArray = pStream->GetDict()->GetArray(FX_BSTRC("Index"));
     if (pArray) {
         FX_DWORD nPairSize = pArray->GetCount() / 2;
-        CPDF_Object* pStartNumObj = NULL;
-        CPDF_Object* pCountObj = NULL;
         for (FX_DWORD i = 0; i < nPairSize; i++) {
-            pStartNumObj = pArray->GetElement(i * 2);
-            pCountObj = pArray->GetElement(i * 2 + 1);
+            CPDF_Object* pStartNumObj = pArray->GetElement(i * 2);
+            CPDF_Object* pCountObj = pArray->GetElement(i * 2 + 1);
             if (pStartNumObj && pStartNumObj->GetType() == PDFOBJ_NUMBER
                 && pCountObj && pCountObj->GetType() == PDFOBJ_NUMBER) {
                 arrIndex.push_back(std::make_pair(pStartNumObj->GetInteger(), pCountObj->GetInteger()));
             }
         }
-        nSegs = arrIndex.size();
-        if (nSegs == 0) {
-            arrIndex.push_back(std::make_pair(0, size));
-            nSegs = 1;
-        }
+    }
+    if (arrIndex.size() == 0) {
+        arrIndex.push_back(std::make_pair(0, size));
     }
     pArray = pStream->GetDict()->GetArray(FX_BSTRC("W"));
     if (pArray == NULL) {
@@ -1069,7 +1064,7 @@
     FX_LPCBYTE pData = acc.GetData();
     FX_DWORD dwTotalSize = acc.GetSize();
     FX_DWORD segindex = 0;
-    for (FX_DWORD i = 0; i < nSegs; i ++) {
+    for (FX_DWORD i = 0; i < arrIndex.size(); i ++) {
         FX_INT32 startnum = arrIndex[i].first;
         if (startnum < 0) {
             continue;
