Fix off-by-one in sizing of m_EmbeddedToUnicodes.
[pdfium.git] / core / src / fpdfapi / fpdf_font / fpdf_font_cid.cpp
index 23bbc4a..e5dabc3 100644 (file)
@@ -76,18 +76,15 @@ CPDF_CMap* CPDF_CMapManager::LoadPredefinedCMap(const CFX_ByteString& name, FX_B
     pCMap->LoadPredefined(this, pname, bPromptCJK);
     return pCMap;
 }
-const FX_LPCSTR g_CharsetNames[] = {NULL, "GB1", "CNS1", "Japan1", "Korea1", "UCS", NULL};
-const int g_CharsetCPs[] = {0, 936, 950, 932, 949, 1200, 0};
+static const FX_LPCSTR g_CharsetNames[NUMBER_OF_CIDSETS] = {NULL, "GB1", "CNS1", "Japan1", "Korea1", "UCS" };
+static const int g_CharsetCPs[NUMBER_OF_CIDSETS] = {0, 936, 950, 932, 949, 1200 };
 int _CharsetFromOrdering(const CFX_ByteString& Ordering)
 {
-    int charset = 1;
-    while (g_CharsetNames[charset] && Ordering != CFX_ByteStringC(g_CharsetNames[charset])) {
-        charset ++;
-    }
-    if (g_CharsetNames[charset] == NULL) {
-        return CIDSET_UNKNOWN;
-    }
-    return charset;
+       for (int charset = 1; charset < NUMBER_OF_CIDSETS; charset++) {
+               if (Ordering == CFX_ByteStringC(g_CharsetNames[charset]))
+                       return charset;
+       }
+       return CIDSET_UNKNOWN;
 }
 void CPDF_CMapManager::ReloadAll()
 {
@@ -184,7 +181,6 @@ static FX_BOOL _CMap_GetCodeRange(_CMap_CodeRange& range, FX_BSTR first, FX_BSTR
     if (first.GetLength() == 0 || first.GetAt(0) != '<') {
         return FALSE;
     }
-    int num = 0;
     int i;
     for (i = 1; i < first.GetLength(); i ++)
         if (first.GetAt(i) == '>') {
@@ -411,7 +407,6 @@ FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr, FX_LPCSTR pName, FX_BO
     m_CodingScheme = map.m_CodingScheme;
     if (m_CodingScheme == MixedTwoBytes) {
         m_pLeadingBytes = FX_Alloc(FX_BYTE, 256);
-        FXSYS_memset32(m_pLeadingBytes, 0, 256);
         for (FX_DWORD i = 0; i < map.m_LeadingSegCount; i ++) {
             for (int b = map.m_LeadingSegs[i * 2]; b <= map.m_LeadingSegs[i * 2 + 1]; b ++) {
                 m_pLeadingBytes[b] = 1;
@@ -431,7 +426,6 @@ FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr, FX_LPCSTR pName, FX_BO
         return FALSE;
     }
     m_pMapping = FX_Alloc(FX_WORD, 65536);
-    FXSYS_memset32(m_pMapping, 0, 65536 * sizeof(FX_WORD));
     FX_DWORD dwRecodeEndPos = 0;
     if (pBuffer[5] == 0) {
         FX_DWORD dwStartIndex = *(FX_DWORD*)(pBuffer + 8);
@@ -480,7 +474,6 @@ extern "C" {
 FX_BOOL CPDF_CMap::LoadEmbedded(FX_LPCBYTE pData, FX_DWORD size)
 {
     m_pMapping = FX_Alloc(FX_WORD, 65536);
-    FXSYS_memset32(m_pMapping, 0, 65536 * sizeof(FX_WORD));
     CPDF_CMapParser parser;
     parser.Initialize(this);
     CPDF_SimpleParser syntax(pData, size);
@@ -1528,7 +1521,6 @@ FX_BOOL CPDF_CIDFont::LoadGB2312()
     CheckFontMetrics();
     m_DefaultWidth = 1000;
     m_pAnsiWidths = FX_Alloc(FX_WORD, 128);
-    FXSYS_memset32(m_pAnsiWidths, 0, 128 * sizeof(FX_WORD));
     for (int i = 32; i < 127; i ++) {
         m_pAnsiWidths[i] = 500;
     }