[poppler] poppler/PSOutputDev.cc poppler/PSOutputDev.h

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 29 11:26:09 UTC 2023


 poppler/PSOutputDev.cc |   24 ++++++------------------
 poppler/PSOutputDev.h  |    6 ++----
 2 files changed, 8 insertions(+), 22 deletions(-)

New commits:
commit 23994cf44ac8a11b0dfbf159df669bbe1ac78dc3
Author: Oliver Sander <oliver.sander at tu-dresden.de>
Date:   Wed Mar 29 12:31:18 2023 +0200

    Use std::vector for the fontIDs array
    
    This makes the code safer and easier to read.

diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index cdabc251..23e3dcf0 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -35,7 +35,7 @@
 // Copyright (C) 2018 Adam Reichold <adam.reichold at t-online.de>
 // Copyright (C) 2018 Philipp Knechtges <philipp-dev at knechtges.com>
 // Copyright (C) 2019, 2021 Christian Persch <chpe at src.gnome.org>
-// Copyright (C) 2019, 2021, 2022 Oliver Sander <oliver.sander at tu-dresden.de>
+// Copyright (C) 2019, 2021-2023 Oliver Sander <oliver.sander at tu-dresden.de>
 // Copyright (C) 2020, 2021 Philipp Knechtges <philipp-dev at knechtges.com>
 // Copyright (C) 2021 Hubert Figuiere <hub at figuiere.net>
 //
@@ -1092,7 +1092,6 @@ PSOutputDev::PSOutputDev(const char *fileName, PDFDoc *docA, char *psTitleA, con
     customCodeCbk = customCodeCbkA;
     customCodeCbkData = customCodeCbkDataA;
 
-    fontIDs = nullptr;
     t1FontNames = nullptr;
     font8Info = nullptr;
     font16Enc = nullptr;
@@ -1151,7 +1150,6 @@ PSOutputDev::PSOutputDev(int fdA, PDFDoc *docA, char *psTitleA, const std::vecto
     customCodeCbk = customCodeCbkA;
     customCodeCbkData = customCodeCbkDataA;
 
-    fontIDs = nullptr;
     t1FontNames = nullptr;
     font8Info = nullptr;
     font16Enc = nullptr;
@@ -1191,7 +1189,6 @@ PSOutputDev::PSOutputDev(FoFiOutputFunc outputFuncA, void *outputStreamA, char *
     customCodeCbk = customCodeCbkA;
     customCodeCbkData = customCodeCbkDataA;
 
-    fontIDs = nullptr;
     t1FontNames = nullptr;
     font8Info = nullptr;
     font16Enc = nullptr;
@@ -1407,9 +1404,8 @@ void PSOutputDev::postInit()
     }
 
     // initialize fontIDs, fontFileIDs, and fontFileNames lists
-    fontIDSize = 64;
-    fontIDLen = 0;
-    fontIDs = (Ref *)gmallocn(fontIDSize, sizeof(Ref));
+    fontIDs.reserve(64);
+    fontIDs.resize(0);
     for (i = 0; i < 14; ++i) {
         fontNames.emplace(psBase14SubstFonts[i].psName);
     }
@@ -1550,9 +1546,6 @@ PSOutputDev::~PSOutputDev()
     if (embFontList) {
         delete embFontList;
     }
-    if (fontIDs) {
-        gfree(fontIDs);
-    }
     if (t1FontNames) {
         for (i = 0; i < t1FontNameLen; ++i) {
             delete t1FontNames[i].psName;
@@ -1963,18 +1956,13 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict)
     int i, j;
 
     // check if font is already set up
-    for (i = 0; i < fontIDLen; ++i) {
-        if (fontIDs[i] == *font->getID()) {
+    for (Ref fontID : fontIDs) {
+        if (fontID == *font->getID()) {
             return;
         }
     }
 
-    // add entry to fontIDs list
-    if (fontIDLen >= fontIDSize) {
-        fontIDSize += 64;
-        fontIDs = (Ref *)greallocn(fontIDs, fontIDSize, sizeof(Ref));
-    }
-    fontIDs[fontIDLen++] = *font->getID();
+    fontIDs.push_back(*font->getID());
 
     psName = nullptr;
     xs = ys = 1;
diff --git a/poppler/PSOutputDev.h b/poppler/PSOutputDev.h
index 76d72396..dad0a384 100644
--- a/poppler/PSOutputDev.h
+++ b/poppler/PSOutputDev.h
@@ -27,7 +27,7 @@
 // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by the LiMux project of the city of Munich
 // Copyright (C) 2018 Adam Reichold <adam.reichold at t-online.de>
 // Copyright (C) 2018, 2020 Philipp Knechtges <philipp-dev at knechtges.com>
-// Copyright (C) 2019 Oliver Sander <oliver.sander at tu-dresden.de>
+// Copyright (C) 2019, 2023 Oliver Sander <oliver.sander at tu-dresden.de>
 // Copyright (C) 2021 Hubert Figuiere <hub at figuiere.net>
 // Copyright (C) 2021 Christian Persch <chpe at src.gnome.org>
 //
@@ -447,9 +447,7 @@ private:
     PDFDoc *doc;
     XRef *xref; // the xref table for this PDF file
 
-    Ref *fontIDs; // list of object IDs of all used fonts
-    int fontIDLen; // number of entries in fontIDs array
-    int fontIDSize; // size of fontIDs array
+    std::vector<Ref> fontIDs; // list of object IDs of all used fonts
     std::set<int> resourceIDs; // list of object IDs of objects containing Resources we've already set up
     std::unordered_set<std::string> fontNames; // all used font names
     std::unordered_map<std::string, int> perFontMaxValidGlyph; // max valid glyph of each font


More information about the poppler mailing list