diff options
author | Oliver Sander <oliver.sander@tu-dresden.de> | 2019-11-26 17:02:56 +0100 |
---|---|---|
committer | Albert Astals Cid <tsdgeos@yahoo.es> | 2020-02-26 21:35:54 +0000 |
commit | 58dfc767964f133f9bf18b3c5eb641c090584967 (patch) | |
tree | f513881de7fd1e3769758956ccb40dd39704d1ec /qt5 | |
parent | 35b7e926035c7d6852ed148b4dbe6d15e32f3fed (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.cc | 5 | ||||
-rw-r--r-- | qt5/src/poppler-form.cc | 10 | ||||
-rw-r--r-- | qt5/src/poppler-page.cc | 6 |
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; } |