poppler/TextOutputDev.cc | 6 +++--- poppler/TextOutputDev.h | 4 ++-- qt5/src/poppler-page.cc | 7 ++----- qt6/src/poppler-page.cc | 7 ++----- utils/pdftotext.cc | 5 ++--- 5 files changed, 11 insertions(+), 18 deletions(-)
New commits: commit 03f80c64305157fbebff73cd57f582086e2cafdf Author: Albert Astals Cid <aa...@kde.org> Date: Sat Oct 30 01:16:10 2021 +0200 Make makeWordList return a unique_ptr diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc index c0929033..26751e63 100644 --- a/poppler/TextOutputDev.cc +++ b/poppler/TextOutputDev.cc @@ -5557,9 +5557,9 @@ int TextPage::dumpFragment(const Unicode *text, int len, const UnicodeMap *uMap, } #ifdef TEXTOUT_WORD_LIST -TextWordList *TextPage::makeWordList(bool physLayout) +std::unique_ptr<TextWordList> TextPage::makeWordList(bool physLayout) { - return new TextWordList(this, physLayout); + return std::make_unique<TextWordList>(this, physLayout); } #endif @@ -5933,7 +5933,7 @@ void TextOutputDev::setMergeCombining(bool merge) } #ifdef TEXTOUT_WORD_LIST -TextWordList *TextOutputDev::makeWordList() +std::unique_ptr<TextWordList> TextOutputDev::makeWordList() { return text->makeWordList(physLayout); } diff --git a/poppler/TextOutputDev.h b/poppler/TextOutputDev.h index b564e854..0d05b948 100644 --- a/poppler/TextOutputDev.h +++ b/poppler/TextOutputDev.h @@ -660,7 +660,7 @@ public: // this->rawOrder is true), physical layout order (if <physLayout> // is true and this->rawOrder is false), or reading order (if both // flags are false). - TextWordList *makeWordList(bool physLayout); + std::unique_ptr<TextWordList> makeWordList(bool physLayout); #endif private: @@ -861,7 +861,7 @@ public: // this->rawOrder is true), physical layout order (if // this->physLayout is true and this->rawOrder is false), or reading // order (if both flags are false). - TextWordList *makeWordList(); + std::unique_ptr<TextWordList> makeWordList(); #endif // Returns the TextPage object for the last rasterized page, diff --git a/qt5/src/poppler-page.cc b/qt5/src/poppler-page.cc index b35894cf..eedc580f 100644 --- a/qt5/src/poppler-page.cc +++ b/qt5/src/poppler-page.cc @@ -734,10 +734,9 @@ QList<TextBox *> Page::textList(Rotation rotate, ShouldAbortQueryFunc shouldAbor m_page->parentDoc->doc->displayPageSlice(&output_dev, m_page->index + 1, 72, 72, rotation, false, false, false, -1, -1, -1, -1, shouldAbortExtractionCallback ? shouldAbortExtractionInternalCallback : nullAbortCallBack, &abortHelper, nullptr, nullptr, true); - TextWordList *word_list = output_dev.makeWordList(); + std::unique_ptr<TextWordList> word_list = output_dev.makeWordList(); - if (!word_list || (shouldAbortExtractionCallback && shouldAbortExtractionCallback(closure))) { - delete word_list; + if (shouldAbortExtractionCallback && shouldAbortExtractionCallback(closure)) { return output_list; } @@ -771,8 +770,6 @@ QList<TextBox *> Page::textList(Rotation rotate, ShouldAbortQueryFunc shouldAbor text_box->m_data->nextWord = wordBoxMap.value(word->nextWord()); } - delete word_list; - return output_list; } diff --git a/qt6/src/poppler-page.cc b/qt6/src/poppler-page.cc index 11a60410..afdbf692 100644 --- a/qt6/src/poppler-page.cc +++ b/qt6/src/poppler-page.cc @@ -705,10 +705,9 @@ std::vector<std::unique_ptr<TextBox>> Page::textList(Rotation rotate, ShouldAbor m_page->parentDoc->doc->displayPageSlice(&output_dev, m_page->index + 1, 72, 72, rotation, false, false, false, -1, -1, -1, -1, shouldAbortExtractionCallback ? shouldAbortExtractionInternalCallback : nullAbortCallBack, &abortHelper, nullptr, nullptr, true); - TextWordList *word_list = output_dev.makeWordList(); + std::unique_ptr<TextWordList> word_list = output_dev.makeWordList(); - if (!word_list || (shouldAbortExtractionCallback && shouldAbortExtractionCallback(closure))) { - delete word_list; + if (shouldAbortExtractionCallback && shouldAbortExtractionCallback(closure)) { return output_list; } @@ -742,8 +741,6 @@ std::vector<std::unique_ptr<TextBox>> Page::textList(Rotation rotate, ShouldAbor text_box->m_data->nextWord = wordBoxMap.value(word->nextWord()); } - delete word_list; - return output_list; } diff --git a/utils/pdftotext.cc b/utils/pdftotext.cc index 71ebcc29..7b45359f 100644 --- a/utils/pdftotext.cc +++ b/utils/pdftotext.cc @@ -16,7 +16,7 @@ // under GPL version 2 or later // // Copyright (C) 2006 Dominic Lachowicz <cina...@hotmail.com> -// Copyright (C) 2007-2008, 2010, 2011, 2017-2020 Albert Astals Cid <aa...@kde.org> +// Copyright (C) 2007-2008, 2010, 2011, 2017-2021 Albert Astals Cid <aa...@kde.org> // Copyright (C) 2009 Jan Jockusch <j...@jockusch.de> // Copyright (C) 2010, 2013 Hib Eris <h...@hiberis.nl> // Copyright (C) 2010 Kenneth Berland <k...@hero.com> @@ -527,7 +527,7 @@ void printWordBBox(FILE *f, PDFDoc *doc, TextOutputDev *textOut, int first, int double hgt = useCropBox ? doc->getPageCropHeight(page) : doc->getPageMediaHeight(page); fprintf(f, " <page width=\"%f\" height=\"%f\">\n", wid, hgt); doc->displayPage(textOut, page, resolution, resolution, 0, !useCropBox, useCropBox, false); - TextWordList *wordlist = textOut->makeWordList(); + std::unique_ptr<TextWordList> wordlist = textOut->makeWordList(); const int word_length = wordlist != nullptr ? wordlist->getLength() : 0; TextWord *word; double xMinA, yMinA, xMaxA, yMaxA; @@ -541,7 +541,6 @@ void printWordBBox(FILE *f, PDFDoc *doc, TextOutputDev *textOut, int first, int fprintf(f, " <word xMin=\"%f\" yMin=\"%f\" xMax=\"%f\" yMax=\"%f\">%s</word>\n", xMinA, yMinA, xMaxA, yMaxA, myString.c_str()); } fprintf(f, " </page>\n"); - delete wordlist; } fprintf(f, "</doc>\n"); }