poppler/CharCodeToUnicode.cc | 24 +++++++++--------------- poppler/CharCodeToUnicode.h | 9 +++++---- 2 files changed, 14 insertions(+), 19 deletions(-)
New commits: commit 01c4d1a3a6535c46017ad71f9cc52171b1026e23 Author: Albert Astals Cid <[email protected]> Date: Wed Mar 30 16:05:20 2022 +0200 Convert CharCodeToUnicode tag to optional string diff --git a/poppler/CharCodeToUnicode.cc b/poppler/CharCodeToUnicode.cc index 86527f1a..cd009379 100644 --- a/poppler/CharCodeToUnicode.cc +++ b/poppler/CharCodeToUnicode.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2006, 2008-2010, 2012, 2018-2021 Albert Astals Cid <[email protected]> +// Copyright (C) 2006, 2008-2010, 2012, 2018-2022 Albert Astals Cid <[email protected]> // Copyright (C) 2007 Julien Rebetez <[email protected]> // Copyright (C) 2007 Koji Otani <[email protected]> // Copyright (C) 2008 Michael Vrable <[email protected]> @@ -162,7 +162,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseCIDToUnicode(const char *fileName, co } fclose(f); - ctu = new CharCodeToUnicode(collection->copy(), mapA, mapLenA, true, nullptr, 0, 0); + ctu = new CharCodeToUnicode(collection->toStr(), mapA, mapLenA, true, nullptr, 0, 0); gfree(mapA); return ctu; } @@ -248,7 +248,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseUnicodeToUnicode(const GooString *fil } fclose(f); - ctu = new CharCodeToUnicode(fileName->copy(), mapA, len, true, sMapA, sMapLenA, sMapSizeA); + ctu = new CharCodeToUnicode(fileName->toStr(), mapA, len, true, sMapA, sMapLenA, sMapSizeA); gfree(mapA); gfree(uBuf); return ctu; @@ -256,14 +256,14 @@ CharCodeToUnicode *CharCodeToUnicode::parseUnicodeToUnicode(const GooString *fil CharCodeToUnicode *CharCodeToUnicode::make8BitToUnicode(Unicode *toUnicode) { - return new CharCodeToUnicode(nullptr, toUnicode, 256, true, nullptr, 0, 0); + return new CharCodeToUnicode({}, toUnicode, 256, true, nullptr, 0, 0); } CharCodeToUnicode *CharCodeToUnicode::parseCMap(const GooString *buf, int nBits) { CharCodeToUnicode *ctu; - ctu = new CharCodeToUnicode(nullptr); + ctu = new CharCodeToUnicode(std::optional<std::string>()); const char *p = buf->c_str(); if (!ctu->parseCMap1(&getCharFromString, &p, nBits)) { delete ctu; @@ -277,7 +277,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseCMapFromFile(const GooString *fileNam CharCodeToUnicode *ctu; FILE *f; - ctu = new CharCodeToUnicode(nullptr); + ctu = new CharCodeToUnicode(std::optional<std::string>()); if ((f = globalParams->findToUnicodeFile(fileName))) { if (!ctu->parseCMap1(&getCharFromFile, f, nBits)) { delete ctu; @@ -559,7 +559,6 @@ void CharCodeToUnicode::addMappingInt(CharCode code, Unicode u) CharCodeToUnicode::CharCodeToUnicode() { - tag = nullptr; map = nullptr; mapLen = 0; sMap = nullptr; @@ -568,11 +567,10 @@ CharCodeToUnicode::CharCodeToUnicode() isIdentity = false; } -CharCodeToUnicode::CharCodeToUnicode(GooString *tagA) +CharCodeToUnicode::CharCodeToUnicode(const std::optional<std::string> &tagA) : tag(tagA) { CharCode i; - tag = tagA; mapLen = 256; map = (Unicode *)gmallocn(mapLen, sizeof(Unicode)); for (i = 0; i < mapLen; ++i) { @@ -584,9 +582,8 @@ CharCodeToUnicode::CharCodeToUnicode(GooString *tagA) isIdentity = false; } -CharCodeToUnicode::CharCodeToUnicode(GooString *tagA, Unicode *mapA, CharCode mapLenA, bool copyMap, CharCodeToUnicodeString *sMapA, int sMapLenA, int sMapSizeA) +CharCodeToUnicode::CharCodeToUnicode(const std::optional<std::string> &tagA, Unicode *mapA, CharCode mapLenA, bool copyMap, CharCodeToUnicodeString *sMapA, int sMapLenA, int sMapSizeA) : tag(tagA) { - tag = tagA; mapLen = mapLenA; if (copyMap) { map = (Unicode *)gmallocn(mapLen, sizeof(Unicode)); @@ -603,9 +600,6 @@ CharCodeToUnicode::CharCodeToUnicode(GooString *tagA, Unicode *mapA, CharCode ma CharCodeToUnicode::~CharCodeToUnicode() { - if (tag) { - delete tag; - } gfree(map); if (sMap) { for (int i = 0; i < sMapLen; ++i) { @@ -629,7 +623,7 @@ void CharCodeToUnicode::decRefCnt() bool CharCodeToUnicode::match(const GooString *tagA) { - return tag && !tag->cmp(tagA); + return tag && tag == tagA->toStr(); } void CharCodeToUnicode::setMapping(CharCode c, Unicode *u, int len) diff --git a/poppler/CharCodeToUnicode.h b/poppler/CharCodeToUnicode.h index d1100538..596d44d1 100644 --- a/poppler/CharCodeToUnicode.h +++ b/poppler/CharCodeToUnicode.h @@ -17,7 +17,7 @@ // // Copyright (C) 2007 Julien Rebetez <[email protected]> // Copyright (C) 2007 Koji Otani <[email protected]> -// Copyright (C) 2008, 2011, 2012, 2018, 2019, 2021 Albert Astals Cid <[email protected]> +// Copyright (C) 2008, 2011, 2012, 2018, 2019, 2021, 2022 Albert Astals Cid <[email protected]> // Copyright (C) 2017 Adrian Johnson <[email protected]> // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <[email protected]>. Work sponsored by the LiMux project of the city of Munich // Copyright (C) 2018 Adam Reichold <[email protected]> @@ -32,6 +32,7 @@ #define CHARCODETOUNICODE_H #include <atomic> +#include <optional> #include "poppler-config.h" #include "CharTypes.h" @@ -103,10 +104,10 @@ private: void addMapping(CharCode code, char *uStr, int n, int offset); void addMappingInt(CharCode code, Unicode u); CharCodeToUnicode(); - explicit CharCodeToUnicode(GooString *tagA); - CharCodeToUnicode(GooString *tagA, Unicode *mapA, CharCode mapLenA, bool copyMap, CharCodeToUnicodeString *sMapA, int sMapLenA, int sMapSizeA); + explicit CharCodeToUnicode(const std::optional<std::string> &tagA); + CharCodeToUnicode(const std::optional<std::string> &tagA, Unicode *mapA, CharCode mapLenA, bool copyMap, CharCodeToUnicodeString *sMapA, int sMapLenA, int sMapSizeA); - GooString *tag; + const std::optional<std::string> tag; Unicode *map; CharCode mapLen; CharCodeToUnicodeString *sMap;
