summaryrefslogtreecommitdiff
path: root/qt5
diff options
context:
space:
mode:
authorOliver Sander <oliver.sander@tu-dresden.de>2019-11-26 17:02:56 +0100
committerAlbert Astals Cid <tsdgeos@yahoo.es>2020-02-26 21:35:54 +0000
commit58dfc767964f133f9bf18b3c5eb641c090584967 (patch)
treef513881de7fd1e3769758956ccb40dd39704d1ec /qt5
parent35b7e926035c7d6852ed148b4dbe6d15e32f3fed (diff)
Handle LinkAction objects by std::unique_ptrs
This clarifies the object ownership, and fixes various memory leaks.
Diffstat (limited to 'qt5')
-rw-r--r--qt5/src/poppler-annotation.cc5
-rw-r--r--qt5/src/poppler-form.cc10
-rw-r--r--qt5/src/poppler-page.cc6
3 files changed, 11 insertions, 10 deletions
diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc
index b09fc681..68b08a58 100644
--- a/qt5/src/poppler-annotation.cc
+++ b/qt5/src/poppler-annotation.cc
@@ -12,6 +12,7 @@
* Copyright (C) 2018 Carlos Garcia Campos <carlosgc@gnome.org>
* Adapting code from
* Copyright (C) 2004 by Enrico Ros <eros.kde@email.it>
+ * Copyright (C) 2020 Oliver Sander <oliver.sander@tu-dresden.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -782,7 +783,7 @@ Link* AnnotationPrivate::additionalAction( Annotation::AdditionalActionType type
const Annot::AdditionalActionsType actionType = toPopplerAdditionalActionType(type);
- ::LinkAction *linkAction = nullptr;
+ std::unique_ptr<::LinkAction> linkAction = nullptr;
if ( pdfAnnot->getType() == Annot::typeScreen )
linkAction = static_cast<AnnotScreen*>( pdfAnnot )->getAdditionalAction( actionType );
else
@@ -791,7 +792,7 @@ Link* AnnotationPrivate::additionalAction( Annotation::AdditionalActionType type
Link *link = nullptr;
if ( linkAction )
- link = PageData::convertLinkActionToLink( linkAction, parentDoc, QRectF() );
+ link = PageData::convertLinkActionToLink( linkAction.get(), parentDoc, QRectF() );
return link;
}
diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc
index cab25af6..58458b76 100644
--- a/qt5/src/poppler-form.cc
+++ b/qt5/src/poppler-form.cc
@@ -8,7 +8,7 @@
* Copyright (C) 2018, Andre Heinecke <aheinecke@intevation.de>
* Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>. Work sponsored by the LiMux project of the city of Munich
* Copyright (C) 2018 Chinmoy Ranjan Pradhan <chinmoyrp65@protonmail.com>
- * Copyright (C) 2018 Oliver Sander <oliver.sander@tu-dresden.de>
+ * Copyright (C) 2018, 2020 Oliver Sander <oliver.sander@tu-dresden.de>
* Copyright (C) 2019 João Netto <joaonetto901@gmail.com>
* Copyright (C) 2020 David García Garzón <voki@canvoki.net>
*
@@ -244,9 +244,9 @@ Link *FormField::additionalAction(AdditionalActionType type) const
}
Link* action = nullptr;
- if (::LinkAction *act = m_formData->fm->getAdditionalAction(actionType))
+ if (std::unique_ptr<::LinkAction> act = m_formData->fm->getAdditionalAction(actionType))
{
- action = PageData::convertLinkActionToLink(act, m_formData->doc, QRectF());
+ action = PageData::convertLinkActionToLink(act.get(), m_formData->doc, QRectF());
}
return action;
}
@@ -262,9 +262,9 @@ Link *FormField::additionalAction(Annotation::AdditionalActionType type) const
const Annot::AdditionalActionsType actionType = toPopplerAdditionalActionType(type);
Link* action = nullptr;
- if (::LinkAction *act = w->getAdditionalAction(actionType))
+ if (std::unique_ptr<::LinkAction> act = w->getAdditionalAction(actionType))
{
- action = PageData::convertLinkActionToLink(act, m_formData->doc, QRectF());
+ action = PageData::convertLinkActionToLink(act.get(), m_formData->doc, QRectF());
}
return action;
}
diff --git a/qt5/src/poppler-page.cc b/qt5/src/poppler-page.cc
index a0862189..30e03509 100644
--- a/qt5/src/poppler-page.cc
+++ b/qt5/src/poppler-page.cc
@@ -23,6 +23,7 @@
* Copyright (C) 2018 Intevation GmbH <intevation@intevation.de>
* Copyright (C) 2018, Tobias Deiminger <haxtibal@posteo.de>
* Copyright (C) 2018 Nelson Benítez León <nbenitezl@gmail.com>
+ * Copyright (C) 2020 Oliver Sander <oliver.sander@tu-dresden.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -835,12 +836,11 @@ Link *Page::action( PageAction act ) const
Dict *dict = o.getDict();
const char *key = act == Page::Opening ? "O" : "C";
Object o2 = dict->lookup((char*)key);
- ::LinkAction *lact = ::LinkAction::parseAction(&o2, m_page->parentDoc->doc->getCatalog()->getBaseURI() );
+ std::unique_ptr<::LinkAction> lact = ::LinkAction::parseAction(&o2, m_page->parentDoc->doc->getCatalog()->getBaseURI() );
Link *popplerLink = nullptr;
if (lact != nullptr)
{
- popplerLink = m_page->convertLinkActionToLink(lact, QRectF());
- delete lact;
+ popplerLink = m_page->convertLinkActionToLink(lact.get(), QRectF());
}
return popplerLink;
}