[poppler] poppler/Object.h poppler/PDFDoc.cc poppler/StructElement.cc

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 7 23:49:24 UTC 2021


 poppler/Object.h         |   13 -------------
 poppler/PDFDoc.cc        |    2 +-
 poppler/StructElement.cc |   12 ++++++------
 3 files changed, 7 insertions(+), 20 deletions(-)

New commits:
commit fd5c40370d3b950ad8d44760e03c1da443c2d262
Author: Albert Astals Cid <aacid at kde.org>
Date:   Wed Dec 8 00:40:04 2021 +0100

    Remove Object::takeString
    
    it's a micro optimization used in non-hot paths and is not even correct
    due to how GooStrings inside Objects are shared, so just kill it and
    copy a few strings in those non-hot paths

diff --git a/poppler/Object.h b/poppler/Object.h
index d5ca59d0..dc4e8baf 100644
--- a/poppler/Object.h
+++ b/poppler/Object.h
@@ -414,24 +414,11 @@ public:
         OBJECT_TYPE_CHECK(objString);
         return string;
     }
-    // After takeString() the only method that should be called for the object is free().
-    GooString *takeString()
-    {
-        OBJECT_TYPE_CHECK(objString);
-        type = objDead;
-        return string;
-    }
     const GooString *getHexString() const
     {
         OBJECT_TYPE_CHECK(objHexString);
         return string;
     }
-    GooString *takeHexString()
-    {
-        OBJECT_TYPE_CHECK(objHexString);
-        type = objDead;
-        return string;
-    }
     const char *getName() const
     {
         OBJECT_TYPE_CHECK(objName);
diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
index 0b694b25..270662a7 100644
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -793,7 +793,7 @@ GooString *PDFDoc::getDocInfoStringEntry(const char *key)
     GooString *result;
 
     if (entryObj.isString()) {
-        result = entryObj.takeString();
+        result = entryObj.getString()->copy();
     } else {
         result = nullptr;
     }
diff --git a/poppler/StructElement.cc b/poppler/StructElement.cc
index c44915b4..5246e582 100644
--- a/poppler/StructElement.cc
+++ b/poppler/StructElement.cc
@@ -921,7 +921,7 @@ void StructElement::parse(Dict *element)
     // Object ID (optional), to be looked at the IDTree in the tree root.
     obj = element->lookup("ID");
     if (obj.isString()) {
-        s->id = obj.takeString();
+        s->id = obj.getString()->copy();
     }
 
     // Page reference (optional) in which at least one of the child items
@@ -939,31 +939,31 @@ void StructElement::parse(Dict *element)
     // Element title (optional).
     obj = element->lookup("T");
     if (obj.isString()) {
-        s->title = obj.takeString();
+        s->title = obj.getString()->copy();
     }
 
     // Language (optional).
     obj = element->lookup("Lang");
     if (obj.isString()) {
-        s->language = obj.takeString();
+        s->language = obj.getString()->copy();
     }
 
     // Alternative text (optional).
     obj = element->lookup("Alt");
     if (obj.isString()) {
-        s->altText = obj.takeString();
+        s->altText = obj.getString()->copy();
     }
 
     // Expanded form of an abbreviation (optional).
     obj = element->lookup("E");
     if (obj.isString()) {
-        s->expandedAbbr = obj.takeString();
+        s->expandedAbbr = obj.getString()->copy();
     }
 
     // Actual text (optional).
     obj = element->lookup("ActualText");
     if (obj.isString()) {
-        s->actualText = obj.takeString();
+        s->actualText = obj.getString()->copy();
     }
 
     // Attributes directly attached to the element (optional).


More information about the poppler mailing list