[poppler] 2 commits - glib/poppler-annot.cc poppler/Annot.cc poppler/Annot.h qt5/src qt6/src
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Mar 2 15:43:46 UTC 2022
glib/poppler-annot.cc | 10 ++--------
poppler/Annot.cc | 16 ++++++++--------
poppler/Annot.h | 8 ++++----
qt5/src/poppler-annotation.cc | 8 ++------
qt6/src/poppler-annotation.cc | 8 ++------
5 files changed, 18 insertions(+), 32 deletions(-)
New commits:
commit 26fb316af4dcfb5d909b44e63fd7991f16e11d0a
Author: Albert Astals Cid <aacid at kde.org>
Date: Tue Mar 1 17:44:00 2022 +0100
AnnotMarkup::setLabel: Take a unique_ptr
This was double deleting on the glib side
diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc
index dbc7e5fa..a8bbd76f 100644
--- a/glib/poppler-annot.cc
+++ b/glib/poppler-annot.cc
@@ -1020,7 +1020,6 @@ gchar *poppler_annot_markup_get_label(PopplerAnnotMarkup *poppler_annot)
void poppler_annot_markup_set_label(PopplerAnnotMarkup *poppler_annot, const gchar *label)
{
AnnotMarkup *annot;
- GooString *goo_tmp;
gchar *tmp;
gsize length = 0;
@@ -1029,10 +1028,8 @@ void poppler_annot_markup_set_label(PopplerAnnotMarkup *poppler_annot, const gch
annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT(poppler_annot)->annot);
tmp = label ? g_convert(label, -1, "UTF-16BE", "UTF-8", nullptr, &length, nullptr) : nullptr;
- goo_tmp = new GooString(tmp, length);
+ annot->setLabel(std::make_unique<GooString>(tmp, length));
g_free(tmp);
- annot->setLabel(goo_tmp);
- delete goo_tmp;
}
/**
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 30d65b39..7f9bfbbc 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -2184,10 +2184,10 @@ void AnnotMarkup::initialize(PDFDoc *docA, Dict *dict)
}
}
-void AnnotMarkup::setLabel(GooString *new_label)
+void AnnotMarkup::setLabel(std::unique_ptr<GooString> &&new_label)
{
if (new_label) {
- label = std::make_unique<GooString>(new_label);
+ label = std::move(new_label);
// append the unicode marker <FE FF> if needed
if (!label->hasUnicodeMarker()) {
label->prependUnicodeMarker();
diff --git a/poppler/Annot.h b/poppler/Annot.h
index 4220b36c..7bc08d4f 100644
--- a/poppler/Annot.h
+++ b/poppler/Annot.h
@@ -866,7 +866,7 @@ public:
// The annotation takes the ownership of new_popup
void setPopup(std::unique_ptr<AnnotPopup> &&new_popup);
- void setLabel(GooString *new_label);
+ void setLabel(std::unique_ptr<GooString> &&new_label);
void setOpacity(double opacityA);
void setDate(GooString *new_date);
diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc
index fdc45c31..cca9737b 100644
--- a/qt5/src/poppler-annotation.cc
+++ b/qt5/src/poppler-annotation.cc
@@ -1361,9 +1361,7 @@ void Annotation::setAuthor(const QString &author)
AnnotMarkup *markupann = dynamic_cast<AnnotMarkup *>(d->pdfAnnot);
if (markupann) {
- GooString *s = QStringToUnicodeGooString(author);
- markupann->setLabel(s);
- delete s;
+ markupann->setLabel(std::unique_ptr<GooString>(QStringToUnicodeGooString(author)));
}
}
diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc
index 53cc7456..43408bf3 100644
--- a/qt6/src/poppler-annotation.cc
+++ b/qt6/src/poppler-annotation.cc
@@ -1024,9 +1024,7 @@ void Annotation::setAuthor(const QString &author)
AnnotMarkup *markupann = dynamic_cast<AnnotMarkup *>(d->pdfAnnot);
if (markupann) {
- GooString *s = QStringToUnicodeGooString(author);
- markupann->setLabel(s);
- delete s;
+ markupann->setLabel(std::unique_ptr<GooString>(QStringToUnicodeGooString(author)));
}
}
commit bd24fb667c0deb220aa7e05cbf2b1807b57fff9b
Author: Albert Astals Cid <aacid at kde.org>
Date: Tue Mar 1 17:41:29 2022 +0100
Annot::setContents: Take a unique_ptr
This was double deleting on the glib side
diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc
index 53205658..dbc7e5fa 100644
--- a/glib/poppler-annot.cc
+++ b/glib/poppler-annot.cc
@@ -700,17 +700,14 @@ gchar *poppler_annot_get_contents(PopplerAnnot *poppler_annot)
**/
void poppler_annot_set_contents(PopplerAnnot *poppler_annot, const gchar *contents)
{
- GooString *goo_tmp;
gchar *tmp;
gsize length = 0;
g_return_if_fail(POPPLER_IS_ANNOT(poppler_annot));
tmp = contents ? g_convert(contents, -1, "UTF-16BE", "UTF-8", nullptr, &length, nullptr) : nullptr;
- goo_tmp = new GooString(tmp, length);
+ poppler_annot->annot->setContents(std::make_unique<GooString>(tmp, length));
g_free(tmp);
- poppler_annot->annot->setContents(goo_tmp);
- delete (goo_tmp);
}
/**
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 9d170784..30d65b39 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -1484,12 +1484,12 @@ void Annot::update(const char *key, Object &&value)
doc->getXRef()->setModifiedObject(&annotObj, ref);
}
-void Annot::setContents(GooString *new_content)
+void Annot::setContents(std::unique_ptr<GooString> &&new_content)
{
annotLocker();
if (new_content) {
- contents = std::make_unique<GooString>(new_content);
+ contents = std::move(new_content);
// append the unicode marker <FE FF> if needed
if (!contents->hasUnicodeMarker()) {
contents->prependUnicodeMarker();
@@ -2884,9 +2884,9 @@ void AnnotFreeText::initialize(PDFDoc *docA, Dict *dict)
}
}
-void AnnotFreeText::setContents(GooString *new_content)
+void AnnotFreeText::setContents(std::unique_ptr<GooString> &&new_content)
{
- Annot::setContents(new_content);
+ Annot::setContents(std::move(new_content));
invalidateAppearance();
}
@@ -3279,9 +3279,9 @@ void AnnotLine::initialize(PDFDoc *docA, Dict *dict)
}
}
-void AnnotLine::setContents(GooString *new_content)
+void AnnotLine::setContents(std::unique_ptr<GooString> &&new_content)
{
- Annot::setContents(new_content);
+ Annot::setContents(std::move(new_content));
if (caption)
invalidateAppearance();
}
diff --git a/poppler/Annot.h b/poppler/Annot.h
index b7a34bb3..4220b36c 100644
--- a/poppler/Annot.h
+++ b/poppler/Annot.h
@@ -719,7 +719,7 @@ public:
// Sets the annot contents to new_content
// new_content should never be NULL
- virtual void setContents(GooString *new_content);
+ virtual void setContents(std::unique_ptr<GooString> &&new_content);
void setName(GooString *new_name);
void setModified(GooString *new_modified);
void setFlags(unsigned int new_flags);
@@ -1051,7 +1051,7 @@ public:
void draw(Gfx *gfx, bool printing) override;
Object getAppearanceResDict() override;
- void setContents(GooString *new_content) override;
+ void setContents(std::unique_ptr<GooString> &&new_content) override;
void setDefaultAppearance(const DefaultAppearance &da);
void setQuadding(AnnotFreeTextQuadding new_quadding);
@@ -1115,7 +1115,7 @@ public:
void draw(Gfx *gfx, bool printing) override;
Object getAppearanceResDict() override;
- void setContents(GooString *new_content) override;
+ void setContents(std::unique_ptr<GooString> &&new_content) override;
void setVertices(double x1, double y1, double x2, double y2);
void setStartEndStyle(AnnotLineEndingStyle start, AnnotLineEndingStyle end);
diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc
index 20a4a534..fdc45c31 100644
--- a/qt5/src/poppler-annotation.cc
+++ b/qt5/src/poppler-annotation.cc
@@ -1386,9 +1386,7 @@ void Annotation::setContents(const QString &contents)
return;
}
- GooString *s = QStringToUnicodeGooString(contents);
- d->pdfAnnot->setContents(s);
- delete s;
+ d->pdfAnnot->setContents(std::unique_ptr<GooString>(QStringToUnicodeGooString(contents)));
}
QString Annotation::uniqueName() const
diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc
index 748749cd..53cc7456 100644
--- a/qt6/src/poppler-annotation.cc
+++ b/qt6/src/poppler-annotation.cc
@@ -1049,9 +1049,7 @@ void Annotation::setContents(const QString &contents)
return;
}
- GooString *s = QStringToUnicodeGooString(contents);
- d->pdfAnnot->setContents(s);
- delete s;
+ d->pdfAnnot->setContents(std::unique_ptr<GooString>(QStringToUnicodeGooString(contents)));
}
QString Annotation::uniqueName() const
More information about the poppler
mailing list