Package: abiword
Version: 3.0.4~dfsg-3
Followup-For: Bug #983960
User: [email protected]
Usertags: origin-ubuntu impish ubuntu-patch
X-Debbugs-Cc: [email protected]
Control: tags -1 patch
Hi Jonas,
C++17 does not allow dynamic exception specifications anymore, therefore we need
to remove/replace the relevant throw() statements, as done upstream in 2017:
https://github.com/AbiWord/abiword/commit/ef29fc9
I'm not sure why this commit isn't part of the 3.0.4 release – from 2019 –
already...
In Ubuntu, the attached (upstream) patch was applied cleanly to make it build
again.
Thanks for considering the patch.
-- System Information:
Debian Release: bullseye/sid
APT prefers hirsute-updates
APT policy: (500, 'hirsute-updates'), (500, 'hirsute-security'), (500,
'hirsute'), (100, 'hirsute-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.11.0-25-generic (SMP w/4 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8),
LANGUAGE=de_DE:en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru
abiword-3.0.4~dfsg/debian/patches/0014-Remove-deprecated-throw-specifiers.patch
abiword-3.0.4~dfsg/debian/patches/0014-Remove-deprecated-throw-specifiers.patch
---
abiword-3.0.4~dfsg/debian/patches/0014-Remove-deprecated-throw-specifiers.patch
1970-01-01 01:00:00.000000000 +0100
+++
abiword-3.0.4~dfsg/debian/patches/0014-Remove-deprecated-throw-specifiers.patch
2021-08-10 16:25:27.000000000 +0200
@@ -0,0 +1,849 @@
+From: Hubert Figuiere <[email protected]>
+Date: Wed, 22 Nov 2017 06:01:56 +0000
+Subject: Remove deprecated throw specifiers
+
+git-svn-id: svn+ssh://svn.abisource.com/svnroot/abiword/trunk@35445
bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
+---
+ plugins/aiksaurus/aiksaurusgtk3/AiksaurusGTK.cpp | 34 ++++++++++-----------
+ plugins/aiksaurus/aiksaurusgtk3/DialogMediator.h | 8 ++---
+ plugins/aiksaurus/aiksaurusgtk3/Display.cpp | 28 ++++++++---------
+ plugins/aiksaurus/aiksaurusgtk3/Display.h | 28 ++++++++---------
+ plugins/aiksaurus/aiksaurusgtk3/Meaning.cpp | 12 ++++----
+ plugins/aiksaurus/aiksaurusgtk3/Meaning.h | 10 +++----
+ plugins/aiksaurus/aiksaurusgtk3/Toolbar.cpp | 32 ++++++++++----------
+ plugins/aiksaurus/aiksaurusgtk3/Toolbar.h | 34 ++++++++++-----------
+ plugins/sdw/xp/docinfo.cpp | 4 +--
+ plugins/sdw/xp/docinfo.h | 2 +-
+ plugins/sdw/xp/ie_imp_StarOffice.cpp | 12 ++++----
+ plugins/sdw/xp/ie_imp_StarOffice.h | 38 ++++++++++++------------
+ src/af/util/xp/ut_iconv.cpp | 2 +-
+ src/af/util/xp/ut_iconv.h | 3 +-
+ 14 files changed, 123 insertions(+), 124 deletions(-)
+
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/AiksaurusGTK.cpp
b/plugins/aiksaurus/aiksaurusgtk3/AiksaurusGTK.cpp
+index 61cd640..15f2721 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/AiksaurusGTK.cpp
++++ b/plugins/aiksaurus/aiksaurusgtk3/AiksaurusGTK.cpp
+@@ -51,15 +51,15 @@ namespace AiksaurusGTK_impl
+ DialogImpl();
+ virtual ~DialogImpl();
+
+- const char* runThesaurus(const char* word) throw();
+- void setTitle(const char* title) throw();
+- void setReplacebar(bool replacebar) throw();
+- void setInitialMessage(const char* message) throw(std::bad_alloc);
+-
+- void eventCancel() throw();
+- void eventReplace(const char* replacement) throw();
+- void eventSelectWord(const char* word) throw();
+- void eventSearch(const char* word) throw();
++ const char* runThesaurus(const char* word) noexcept(false);
++ void setTitle(const char* title) noexcept(false);
++ void setReplacebar(bool replacebar) noexcept(false);
++ void setInitialMessage(const char* message) noexcept(false);
++
++ void eventCancel() noexcept(false);
++ void eventReplace(const char* replacement) noexcept(false);
++ void eventSelectWord(const char* word) noexcept(false);
++ void eventSearch(const char* word) noexcept(false);
+ };
+
+
+@@ -78,13 +78,13 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void DialogImpl::setReplacebar(bool replacebar) throw()
++ void DialogImpl::setReplacebar(bool replacebar) noexcept(false)
+ {
+ d_showreplacebar = replacebar;
+ }
+
+
+- void DialogImpl::setInitialMessage(const char* message)
throw(std::bad_alloc)
++ void DialogImpl::setInitialMessage(const char* message) noexcept(false)
+ {
+ d_initialMessage = message;
+ }
+@@ -149,7 +149,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- const char* DialogImpl::runThesaurus(const char* word) throw()
++ const char* DialogImpl::runThesaurus(const char* word) noexcept(false)
+ {
+ try {
+
+@@ -180,7 +180,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void DialogImpl::setTitle(const char* word) throw()
++ void DialogImpl::setTitle(const char* word) noexcept(false)
+ {
+ try {
+ d_title = (word) ? (word) : ("");
+@@ -191,13 +191,13 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void DialogImpl::eventCancel() throw()
++ void DialogImpl::eventCancel() noexcept(false)
+ {
+ gtk_main_quit();
+ }
+
+
+- void DialogImpl::eventReplace(const char* replacement) throw()
++ void DialogImpl::eventReplace(const char* replacement) noexcept(false)
+ {
+ try {
+ d_replacement = replacement;
+@@ -209,14 +209,14 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void DialogImpl::eventSelectWord(const char* word) throw()
++ void DialogImpl::eventSelectWord(const char* word) noexcept(false)
+ {
+ if (d_replacebar_ptr)
+ d_replacebar_ptr->setText(word);
+ }
+
+
+- void DialogImpl::eventSearch(const char* word) throw()
++ void DialogImpl::eventSearch(const char* word) noexcept(false)
+ {
+ try {
+ std::string w( (word) ? (word) : ("") );
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/DialogMediator.h
b/plugins/aiksaurus/aiksaurusgtk3/DialogMediator.h
+index f626a3e..0bbd614 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/DialogMediator.h
++++ b/plugins/aiksaurus/aiksaurusgtk3/DialogMediator.h
+@@ -26,10 +26,10 @@ namespace AiksaurusGTK_impl
+ class DialogMediator
+ {
+ public:
+- virtual void eventCancel() throw() = 0;
+- virtual void eventReplace(const char* replacement) throw() = 0;
+- virtual void eventSelectWord(const char* word) throw() = 0;
+- virtual void eventSearch(const char* word) throw() = 0;
++ virtual void eventCancel() noexcept(false) = 0;
++ virtual void eventReplace(const char* replacement)
noexcept(false) = 0;
++ virtual void eventSelectWord(const char* word) noexcept(false) =
0;
++ virtual void eventSearch(const char* word) noexcept(false) = 0;
+ };
+ }
+
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Display.cpp
b/plugins/aiksaurus/aiksaurusgtk3/Display.cpp
+index cdb05de..787c2db 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Display.cpp
++++ b/plugins/aiksaurus/aiksaurusgtk3/Display.cpp
+@@ -29,7 +29,7 @@ using namespace std;
+ namespace AiksaurusGTK_impl
+ {
+
+- Display::Display(DialogMediator& mediator) throw()
++ Display::Display(DialogMediator& mediator) noexcept(false)
+ : d_mediator(mediator)
+ {
+ // ensure that styles are set up.
+@@ -61,7 +61,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- Display::~Display() throw()
++ Display::~Display() noexcept(false)
+ {
+ for(int i = 0;i < static_cast<int>(d_meanings.size());++i)
+ {
+@@ -71,7 +71,7 @@ namespace AiksaurusGTK_impl
+
+
+ void Display::_createMeaning(const string& title, vector<string>& words)
+- throw(std::bad_alloc)
++ noexcept(false)
+ {
+ Meaning *mean = new Meaning(title, words, *this);
+ d_meanings.push_back(mean);
+@@ -79,7 +79,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void Display::_resetDisplay() throw()
++ void Display::_resetDisplay() noexcept(false)
+ {
+ // Recreate our layout widget.
+ if (d_layout)
+@@ -96,7 +96,7 @@ namespace AiksaurusGTK_impl
+ d_meanings.clear();
+ }
+
+- void Display::_displayResults(const char* word) throw(Exception,
std::bad_alloc)
++ void Display::_displayResults(const char* word) noexcept(false)
+ {
+ _checkThesaurus();
+
+@@ -135,7 +135,7 @@ namespace AiksaurusGTK_impl
+
+
+
+- void Display::_checkThesaurus() throw(Exception)
++ void Display::_checkThesaurus() noexcept(false)
+ {
+ if (d_thesaurus.error()[0])
+ {
+@@ -151,7 +151,7 @@ namespace AiksaurusGTK_impl
+ }
+
+ void Display::_displayAlternatives()
+- throw(Exception, std::bad_alloc)
++ noexcept(false)
+ {
+ _checkThesaurus();
+ vector<string> words;
+@@ -165,7 +165,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void Display::showMessage(const char* message) throw()
++ void Display::showMessage(const char* message) noexcept(false)
+ {
+ _resetDisplay();
+ GtkWidget* label = gtk_label_new(message);
+@@ -174,7 +174,7 @@ namespace AiksaurusGTK_impl
+ gtk_widget_show_all(d_layout);
+ }
+
+- void Display::search(const char* word) throw(std::bad_alloc)
++ void Display::search(const char* word) noexcept(false)
+ {
+ try
+ {
+@@ -195,7 +195,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void Display::_handleClick(bool isDoubleClick, const char* text)
throw(std::bad_alloc)
++ void Display::_handleClick(bool isDoubleClick, const char* text)
noexcept(false)
+ {
+ string str(text); // might throw
+
+@@ -206,7 +206,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void Display::_handleSelection(GtkWidget* list) throw()
++ void Display::_handleSelection(GtkWidget* list) noexcept(false)
+ {
+ for(int i = 0;i < static_cast<int>(d_meanings.size());++i)
+ {
+@@ -215,13 +215,13 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- GtkWidget* Display::getDisplay() throw()
++ GtkWidget* Display::getDisplay() noexcept(false)
+ {
+ return d_scroller;
+ }
+
+
+- const Aiksaurus& Display::getThesaurus() const throw()
++ const Aiksaurus& Display::getThesaurus() const noexcept(false)
+ {
+ return d_thesaurus;
+ }
+@@ -233,7 +233,7 @@ namespace AiksaurusGTK_impl
+ // To do this, we have to set up a resource first so that the
+ // styles mean what we want them to mean.
+ //
+- void Display::_initResources() throw()
++ void Display::_initResources() noexcept(false)
+ {
+ // Execute this code only once.
+ static bool done = false;
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Display.h
b/plugins/aiksaurus/aiksaurusgtk3/Display.h
+index 9986921..40c0da4 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Display.h
++++ b/plugins/aiksaurus/aiksaurusgtk3/Display.h
+@@ -28,30 +28,30 @@ namespace AiksaurusGTK_impl
+ GtkWidget* d_layout;
+ std::vector<Meaning*> d_meanings;
+
+- void _handleSelection(GtkWidget* list) throw();
+- void _handleClick(bool isDoubleClick, const char* text)
throw(std::bad_alloc);
++ void _handleSelection(GtkWidget* list) noexcept(false);
++ void _handleClick(bool isDoubleClick, const char* text)
noexcept(false);
+
+- void _resetDisplay() throw();
++ void _resetDisplay() noexcept(false);
+
+ void _createMeaning(const std::string& title,
std::vector<std::string>& words)
+- throw(std::bad_alloc);
++ noexcept(false);
+
+- void _displayResults(const char* word) throw(Exception,
std::bad_alloc);
+- void _displayAlternatives() throw(Exception, std::bad_alloc);
++ void _displayResults(const char* word) noexcept(false);
++ void _displayAlternatives() noexcept(false);
+
+- void _checkThesaurus() throw(Exception);
++ void _checkThesaurus() noexcept(false);
+
+-// static void _initResources() throw();
++// static void _initResources() noexcept(false);
+
+ public:
+- Display(DialogMediator& parent) throw();
+- ~Display() throw();
++ Display(DialogMediator& parent) noexcept(false);
++ ~Display() noexcept(false);
+
+- const Aiksaurus& getThesaurus() const throw();
+- GtkWidget* getDisplay() throw();
++ const Aiksaurus& getThesaurus() const noexcept(false);
++ GtkWidget* getDisplay() noexcept(false);
+
+- void search(const char* word) throw(std::bad_alloc);
+- void showMessage(const char* message) throw();
++ void search(const char* word) noexcept(false);
++ void showMessage(const char* message) noexcept(false);
+ };
+
+ }
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Meaning.cpp
b/plugins/aiksaurus/aiksaurusgtk3/Meaning.cpp
+index e0652df..e770e1e 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Meaning.cpp
++++ b/plugins/aiksaurus/aiksaurusgtk3/Meaning.cpp
+@@ -9,7 +9,7 @@ using namespace std;
+ namespace AiksaurusGTK_impl
+ {
+
+- static void ucwords(string& str) throw()
++ static void ucwords(string& str) noexcept(false)
+ {
+ bool ws = true;
+ for(int i = 0;i < static_cast<int>(str.size());++i)
+@@ -26,7 +26,7 @@ namespace AiksaurusGTK_impl
+ }
+
+ Meaning::Meaning(const string& title, vector<string>& words, Display&
display)
+- throw(bad_alloc)
++ noexcept(false)
+ : d_title(title), d_words(words), d_display(display), d_lists(4),
d_models(4)
+ {
+ d_masterLayout = gtk_event_box_new();
+@@ -126,12 +126,12 @@ namespace AiksaurusGTK_impl
+
+ }
+
+- Meaning::~Meaning() throw()
++ Meaning::~Meaning() noexcept(false)
+ {
+
+ }
+
+- GtkWidget* Meaning::getLayout() throw()
++ GtkWidget* Meaning::getLayout() noexcept(false)
+ {
+ return d_masterLayout;
+ }
+@@ -139,7 +139,7 @@ namespace AiksaurusGTK_impl
+
+ gint Meaning::_wordclick
+ (GtkTreeSelection *sel, gpointer data)
+- throw(std::bad_alloc)
++ noexcept(false)
+ {
+ Meaning *m = static_cast<Meaning*>(data);
+ GtkTreeView *tv = gtk_tree_selection_get_tree_view(sel);
+@@ -159,7 +159,7 @@ namespace AiksaurusGTK_impl
+ }
+
+
+- void Meaning::unselectListsExcept(GtkWidget* list) throw()
++ void Meaning::unselectListsExcept(GtkWidget* list) noexcept(false)
+ {
+ for(int i = 0;i < static_cast<int>(d_lists.size());++i)
+ {
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Meaning.h
b/plugins/aiksaurus/aiksaurusgtk3/Meaning.h
+index 6b41d0d..5c63981 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Meaning.h
++++ b/plugins/aiksaurus/aiksaurusgtk3/Meaning.h
+@@ -25,18 +25,18 @@ namespace AiksaurusGTK_impl
+ GtkWidget* d_label;
+
+ static gint _wordclick(GtkTreeSelection *sel,
+- gpointer data) throw(std::bad_alloc);
++ gpointer data) noexcept(false);
+
+ public:
+
+ Meaning(const string& title, vector<string>& words, Display&
display)
+- throw(std::bad_alloc);
++ noexcept(false);
+
+- ~Meaning() throw();
++ ~Meaning() noexcept(false);
+
+- GtkWidget* getLayout() throw();
++ GtkWidget* getLayout() noexcept(false);
+
+- void unselectListsExcept(GtkWidget* me) throw();
++ void unselectListsExcept(GtkWidget* me) noexcept(false);
+ };
+ }
+
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Toolbar.cpp
b/plugins/aiksaurus/aiksaurusgtk3/Toolbar.cpp
+index ff4ea7a..ba535d4 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Toolbar.cpp
++++ b/plugins/aiksaurus/aiksaurusgtk3/Toolbar.cpp
+@@ -26,7 +26,7 @@
+ namespace AiksaurusGTK_impl
+ {
+
+- Toolbar::Toolbar(DialogMediator& mediator, GtkWidget* window)
throw(std::bad_alloc)
++ Toolbar::Toolbar(DialogMediator& mediator, GtkWidget* window)
noexcept(false)
+ : d_mediator(mediator),
+ d_searchbar_words(12),
+ d_ishistorymove(false),
+@@ -87,12 +87,12 @@ namespace AiksaurusGTK_impl
+ _updateNavigation();
+ }
+
+- Toolbar::~Toolbar() throw()
++ Toolbar::~Toolbar() noexcept(false)
+ {
+
+ }
+
+- void Toolbar::_updateNavigation() throw(std::bad_alloc)
++ void Toolbar::_updateNavigation() noexcept(false)
+ {
+ if (d_history.size_back())
+ d_backbutton_ptr->enable();
+@@ -111,7 +111,7 @@ namespace AiksaurusGTK_impl
+ d_forwardbutton_ptr->updateMenuOptions();
+ }
+
+- void Toolbar::search(const char* str) throw(std::bad_alloc)
++ void Toolbar::search(const char* str) noexcept(false)
+ {
+ if (!d_ishistorymove)
+ d_history.search(str);
+@@ -126,29 +126,29 @@ namespace AiksaurusGTK_impl
+ gtk_combo_box_text_append_text(combo,
reinterpret_cast<const char*>(ptr->data));
+ }
+
+- void Toolbar::_setTooltip(GtkWidget* w, const char* str) throw()
++ void Toolbar::_setTooltip(GtkWidget* w, const char* str) noexcept(false)
+ {
+ gtk_widget_set_tooltip_text(w, str);
+ }
+
+- void Toolbar::focus() throw()
++ void Toolbar::focus() noexcept(false)
+ {
+ gtk_window_set_focus(GTK_WINDOW(d_window_ptr),
gtk_bin_get_child(GTK_BIN(d_searchbar_ptr)));
+ }
+
+- const char* Toolbar::getText() const throw()
++ const char* Toolbar::getText() const noexcept(false)
+ {
+ return
gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(d_searchbar_ptr))));
+ }
+
+- GtkWidget* Toolbar::getToolbar() throw()
++ GtkWidget* Toolbar::getToolbar() noexcept(false)
+ {
+ return d_toolbar_ptr;
+ }
+
+
+
+- void Toolbar::_backClicked(GtkWidget*, gpointer data) throw()
++ void Toolbar::_backClicked(GtkWidget*, gpointer data) noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ tb->d_history.move_back();
+@@ -157,7 +157,7 @@ namespace AiksaurusGTK_impl
+ tb->d_ishistorymove = false;
+ }
+
+- void Toolbar::_backMenuClicked(GList* element, gpointer data) throw()
++ void Toolbar::_backMenuClicked(GList* element, gpointer data)
noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ tb->d_history.move_back_to(element);
+@@ -166,7 +166,7 @@ namespace AiksaurusGTK_impl
+ tb->d_ishistorymove = false;
+ }
+
+- void Toolbar::_forwardClicked(GtkWidget*, gpointer data) throw()
++ void Toolbar::_forwardClicked(GtkWidget*, gpointer data) noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ tb->d_history.move_forward();
+@@ -175,7 +175,7 @@ namespace AiksaurusGTK_impl
+ tb->d_ishistorymove = false;
+ }
+
+- void Toolbar::_forwardMenuClicked(GList* element, gpointer data) throw()
++ void Toolbar::_forwardMenuClicked(GList* element, gpointer data)
noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ tb->d_history.move_forward_to(element);
+@@ -184,7 +184,7 @@ namespace AiksaurusGTK_impl
+ tb->d_ishistorymove = false;
+ }
+
+- void Toolbar::_searchBarChanged(GtkWidget*, gpointer data) throw()
++ void Toolbar::_searchBarChanged(GtkWidget*, gpointer data) noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ bool popup_visible;
+@@ -194,7 +194,7 @@ namespace AiksaurusGTK_impl
+ tb->d_searchhack = true;
+ }
+
+- void Toolbar::_searchBarHide(GtkWidget*, gpointer data) throw()
++ void Toolbar::_searchBarHide(GtkWidget*, gpointer data) noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+
+@@ -204,12 +204,12 @@ namespace AiksaurusGTK_impl
+ tb->d_searchhack = false;
+ }
+
+- void Toolbar::_searchBarActivate(GtkWidget* w, gpointer data) throw()
++ void Toolbar::_searchBarActivate(GtkWidget* w, gpointer data)
noexcept(false)
+ {
+ _searchClicked(w, data);
+ }
+
+- void Toolbar::_searchClicked(GtkWidget*, gpointer data) throw()
++ void Toolbar::_searchClicked(GtkWidget*, gpointer data) noexcept(false)
+ {
+ Toolbar* tb = static_cast<Toolbar*>(data);
+ tb->d_mediator.eventSearch( tb->getText() );
+diff --git a/plugins/aiksaurus/aiksaurusgtk3/Toolbar.h
b/plugins/aiksaurus/aiksaurusgtk3/Toolbar.h
+index 97b527c..587234f 100644
+--- a/plugins/aiksaurus/aiksaurusgtk3/Toolbar.h
++++ b/plugins/aiksaurus/aiksaurusgtk3/Toolbar.h
+@@ -55,33 +55,33 @@ namespace AiksaurusGTK_impl
+ GtkWidget* d_searchbar_ptr;
+ GtkWidget* d_searchbar_label_ptr;
+
+- void _updateNavigation() throw(std::bad_alloc);
++ void _updateNavigation() noexcept(false);
+
+- void _setTooltip(GtkWidget* w, const char* str) throw();
++ void _setTooltip(GtkWidget* w, const char* str) noexcept(false);
+
+- static void _backClicked(GtkWidget* w, gpointer data) throw();
+- static void _backMenuClicked(GList* element, gpointer data)
throw();
++ static void _backClicked(GtkWidget* w, gpointer data)
noexcept(false);
++ static void _backMenuClicked(GList* element, gpointer data)
noexcept(false);
+
+- static void _forwardClicked(GtkWidget* w, gpointer data) throw();
+- static void _forwardMenuClicked(GList* element, gpointer data)
throw();
++ static void _forwardClicked(GtkWidget* w, gpointer data)
noexcept(false);
++ static void _forwardMenuClicked(GList* element, gpointer data)
noexcept(false);
+
+- static void _searchBarChanged(GtkWidget* w, gpointer data)
throw();
+- static void _searchBarShow(GtkWidget* w, gpointer data) throw();
+- static void _searchBarHide(GtkWidget* w, gpointer data) throw();
+- static void _searchBarActivate(GtkWidget* w, gpointer d) throw();
++ static void _searchBarChanged(GtkWidget* w, gpointer data)
noexcept(false);
++ static void _searchBarShow(GtkWidget* w, gpointer data)
noexcept(false);
++ static void _searchBarHide(GtkWidget* w, gpointer data)
noexcept(false);
++ static void _searchBarActivate(GtkWidget* w, gpointer d)
noexcept(false);
+
+- static void _searchClicked(GtkWidget* w, gpointer data) throw();
++ static void _searchClicked(GtkWidget* w, gpointer data)
noexcept(false);
+
+ public:
+
+- Toolbar(DialogMediator& mediator, GtkWidget* window)
throw(std::bad_alloc);
+- ~Toolbar() throw();
++ Toolbar(DialogMediator& mediator, GtkWidget* window)
noexcept(false);
++ ~Toolbar() noexcept(false);
+
+- GtkWidget* getToolbar() throw();
+- const char* getText() const throw();
+- void focus() throw();
++ GtkWidget* getToolbar() noexcept(false);
++ const char* getText() const noexcept(false);
++ void focus() noexcept(false);
+
+- void search(const char* str) throw(std::bad_alloc);
++ void search(const char* str) noexcept(false);
+ };
+
+ }
+diff --git a/plugins/sdw/xp/docinfo.cpp b/plugins/sdw/xp/docinfo.cpp
+index 3fe857b..3fa0643 100644
+--- a/plugins/sdw/xp/docinfo.cpp
++++ b/plugins/sdw/xp/docinfo.cpp
+@@ -38,7 +38,7 @@ SDWDocInfo::~SDWDocInfo() {}
+ /** Reads a bytestring, followed by a padding. aMaxlen is the max. number of
bytes to read. */
+ static void readPaddedByteString(GsfInput* aStream, UT_UCS4String& aString,
+ UT_iconv_t aConverter, UT_uint32 aMaxlen)
+- throw(UT_Error)
++ noexcept(false)
+ {
+ UT_UCS4Char* str;
+ readByteString(aStream, str, aConverter);
+@@ -116,7 +116,7 @@ static inline void do_SetMetadata(PD_Document* aDoc, const
std::string & aKey, U
+ }
+
+ void SDWDocInfo::load(GsfInfile* aDoc, PD_Document* aPDDoc)
+- throw(UT_Error)
++ noexcept(false)
+ {
+ char* headStr = NULL;
+
+diff --git a/plugins/sdw/xp/docinfo.h b/plugins/sdw/xp/docinfo.h
+index cf57cb7..2b02dc2 100644
+--- a/plugins/sdw/xp/docinfo.h
++++ b/plugins/sdw/xp/docinfo.h
+@@ -41,7 +41,7 @@ class SDWDocInfo {
+ * @param aDoc The OLE Document which contains the stream
+ * @param aPDDoc The PD_Document on which the metadata will be
set.
+ * Should be called as load(mDoc, getDoc()); */
+- static void load(GsfInfile *aDoc, PD_Document* aPDDoc)
throw(UT_Error);
++ static void load(GsfInfile *aDoc, PD_Document* aPDDoc)
noexcept(false);
+ };
+
+ #endif
+diff --git a/plugins/sdw/xp/ie_imp_StarOffice.cpp
b/plugins/sdw/xp/ie_imp_StarOffice.cpp
+index ba9bf4a..53f302a 100644
+--- a/plugins/sdw/xp/ie_imp_StarOffice.cpp
++++ b/plugins/sdw/xp/ie_imp_StarOffice.cpp
+@@ -183,7 +183,7 @@ static UT_uint16 lcl_sw3io__CompressWhich(UT_uint16 nWhich)
+ #endif
+
+ void streamRead(GsfInput* aStream, TextAttr& aAttr, gsf_off_t aEoa)
+- throw(UT_Error)
++ noexcept(false)
+ {
+ UT_uint8 flags;
+ gsf_off_t newPos;
+@@ -423,7 +423,7 @@ static UT_String _getPassword (XAP_Frame * pFrame)
+ }
+
+ void readByteString(GsfInput* stream, char*& str, UT_uint16* aLength)
+- throw(UT_Error)
++ noexcept(false)
+ {
+ UT_uint16 length;
+ str = NULL;
+@@ -436,7 +436,7 @@ void readByteString(GsfInput* stream, char*& str,
UT_uint16* aLength)
+ *aLength = length;
+ }
+
+-void readByteString(GsfInput* stream, UT_UCS4Char*& str, UT_iconv_t
converter, SDWCryptor* cryptor) throw(UT_Error)
++void readByteString(GsfInput* stream, UT_UCS4Char*& str, UT_iconv_t
converter, SDWCryptor* cryptor) noexcept(false)
+ {
+ UT_uint16 len;
+ char* rawString;
+@@ -532,7 +532,7 @@ bool IE_Imp_StarOffice_Sniffer::getDlgLabels(const char**
pszDesc, const char**
+ //
********************************************************************************
+ // Header Class
+
+-void DocHdr::load(GsfInput* stream) throw(UT_Error)
++void DocHdr::load(GsfInput* stream) noexcept(false)
+ {
+ UT_DEBUGMSG(("SDW: entering DocHdr::load\n"));
+ static const char sw3hdr[] = "SW3HDR";
+@@ -614,7 +614,7 @@ IE_Imp_StarOffice::~IE_Imp_StarOffice() {
+ g_object_unref(G_OBJECT(mOle));
+ }
+
+-void IE_Imp_StarOffice::readRecSize(GsfInput* aStream, UT_uint32& aSize,
gsf_off_t* aEOR) throw(UT_Error) {
++void IE_Imp_StarOffice::readRecSize(GsfInput* aStream, UT_uint32& aSize,
gsf_off_t* aEOR) noexcept(false) {
+ // Yes, that's correct, only 3 bytes.
+ guint8 buf [3];
+ aSize = 0;
+@@ -630,7 +630,7 @@ void IE_Imp_StarOffice::readRecSize(GsfInput* aStream,
UT_uint32& aSize, gsf_off
+ *aEOR = gsf_input_tell(aStream) + aSize;
+ }
+
+-void readFlagRec(GsfInput* stream, UT_uint8& flags, gsf_off_t* newPos)
throw(UT_Error)
++void readFlagRec(GsfInput* stream, UT_uint8& flags, gsf_off_t* newPos)
noexcept(false)
+ {
+ streamRead(stream, flags);
+ if (newPos)
+diff --git a/plugins/sdw/xp/ie_imp_StarOffice.h
b/plugins/sdw/xp/ie_imp_StarOffice.h
+index 17193b1..59c8810 100644
+--- a/plugins/sdw/xp/ie_imp_StarOffice.h
++++ b/plugins/sdw/xp/ie_imp_StarOffice.h
+@@ -49,7 +49,7 @@ struct ClsId {
+ * str must be delete[]'d, not free'd!
+ * aLength, if non-null, contains the length of the string in bytes. */
+ void readByteString(GsfInput* stream, char*& str, UT_uint16* aLength = NULL)
+- throw(UT_Error);
++ noexcept(false);
+
+ /*! Reads a bytestring from a stream and converts it to UCS-4. Optionally,
+ * it can also decrypt it.
+@@ -57,7 +57,7 @@ void readByteString(GsfInput* stream, char*& str, UT_uint16*
aLength = NULL)
+ * @param str The string where the bytestring should be stored
+ * @param converter Iconv handle for charset conversion
+ * @param cryptor (Optional) The cryptor used for decrypting the string */
+-void readByteString(GsfInput* stream, UT_UCS4Char*& str, UT_iconv_t
converter, SDWCryptor* cryptor = NULL) throw(UT_Error);
++void readByteString(GsfInput* stream, UT_UCS4Char*& str, UT_iconv_t
converter, SDWCryptor* cryptor = NULL) noexcept(false);
+
+ class DocHdr {
+ public:
+@@ -67,7 +67,7 @@ class DocHdr {
+ * \param stream The OLE Stream to load from - should be the one
+ * with the name "StarWriterDocument"
+ * \throw UT_Error on failure */
+- void load(GsfInput* stream) throw(UT_Error);
++ void load(GsfInput* stream) noexcept(false);
+
+ UT_uint8 cLen; // ???
+ UT_uint16 nVersion;
+@@ -199,7 +199,7 @@ class IE_Imp_StarOffice : public IE_Imp
+ * \param aStream the stream to read from
+ * \param aSize Reference to the size of the record
+ * \param aEOR End of Record - file position where the record
is finished*/
+- void readRecSize(GsfInput* stream, UT_uint32& aSize, gsf_off_t*
aEOR = NULL) throw(UT_Error);
++ void readRecSize(GsfInput* stream, UT_uint32& aSize, gsf_off_t*
aEOR = NULL) noexcept(false);
+ /*! Reads a string from the file where the first sint32
contains the length. If it
+ * is zero-terminated, length must include the byte for
termination. The string will
+ * be converted to the charset given in mDocHdr. If the
document is encrypted, the
+@@ -207,7 +207,7 @@ class IE_Imp_StarOffice : public IE_Imp
+ * \param stream The stream to read from
+ * \param str Reference to pointer to UT_UCS4Char, where the
string is stored.
+ * Must be free'd. Is NULL if the function fails. */
+- void readByteString(GsfInput* stream, UT_UCS4Char*& str)
throw(UT_Error) {
++ void readByteString(GsfInput* stream, UT_UCS4Char*& str)
noexcept(false) {
+ ::readByteString(stream, str, mDocHdr.converter,
mDocHdr.cryptor);
+ }
+
+@@ -222,32 +222,32 @@ class IE_Imp_StarOffice : public IE_Imp
+ * \param flags Flags (also contain the length in the 4 least significant
bytes)
+ * \param newPos (optional) Pointer to a variable where the position after the
+ * flags record is stored. */
+-void readFlagRec(GsfInput* stream, UT_uint8& flags, gsf_off_t* newPos = NULL)
throw(UT_Error);
++void readFlagRec(GsfInput* stream, UT_uint8& flags, gsf_off_t* newPos = NULL)
noexcept(false);
+
+ /*! Reads one character from the given GsfInput.
+ * \param aStream The OLE Stream
+ * \param aChar Reference to the character
+ * \throw UT_Error on failure */
+-inline void readChar(GsfInput* aStream, char& aChar) throw(UT_Error) {
++inline void readChar(GsfInput* aStream, char& aChar) noexcept(false) {
+ if (!gsf_input_read(aStream, 1, reinterpret_cast<guint8*>(&aChar)))
+ throw UT_IE_BOGUSDOCUMENT;
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_uint8& aDest) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_uint8& aDest) noexcept(false) {
+ if (!gsf_input_read(aStream, 1, static_cast<guint8*>(&aDest)))
+ throw UT_IE_BOGUSDOCUMENT;
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_sint8& aDest) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_sint8& aDest) noexcept(false) {
+ streamRead(aStream, reinterpret_cast<UT_uint8 &>(aDest));
+ }
+
+-inline void streamRead(GsfInput* aStream, char& aDest) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, char& aDest) noexcept(false) {
+ streamRead(aStream, reinterpret_cast<UT_uint8 &>(aDest));
+ }
+
+
+-inline void streamRead(GsfInput* aStream, UT_uint16& aDest, bool
isLittleEndian = true) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_uint16& aDest, bool
isLittleEndian = true) noexcept(false) {
+ guint8 buf [2];
+ if (!gsf_input_read(aStream, 2, buf))
+ throw UT_IE_BOGUSDOCUMENT;
+@@ -259,11 +259,11 @@ inline void streamRead(GsfInput* aStream, UT_uint16&
aDest, bool isLittleEndian
+ }
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_sint16& aDest, bool
isLittleEndian = true) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_sint16& aDest, bool
isLittleEndian = true) noexcept(false) {
+ streamRead(aStream, reinterpret_cast<UT_uint16 &>(aDest),
isLittleEndian);
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_uint32& aDest, bool
isLittleEndian = true) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_uint32& aDest, bool
isLittleEndian = true) noexcept(false) {
+ guint8 buf [4];
+ if (!gsf_input_read(aStream, 4, buf))
+ throw UT_IE_BOGUSDOCUMENT;
+@@ -275,17 +275,17 @@ inline void streamRead(GsfInput* aStream, UT_uint32&
aDest, bool isLittleEndian
+ }
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_sint32& aDest, bool
isLittleEndian = true) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_sint32& aDest, bool
isLittleEndian = true) noexcept(false) {
+ streamRead(aStream, reinterpret_cast<UT_uint32 &>(aDest),
isLittleEndian);
+ }
+
+ // reads the value as uint8
+-inline void streamRead(GsfInput* aStream, bool& aDest) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, bool& aDest) noexcept(false) {
+ streamRead(aStream, reinterpret_cast<UT_uint8&>(aDest));
+ }
+
+ // Class ID
+-inline void streamRead(GsfInput* aStream, ClsId& aClsId) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, ClsId& aClsId) noexcept(false) {
+ streamRead(aStream, aClsId.n1);
+ streamRead(aStream, aClsId.n2);
+ streamRead(aStream, aClsId.n3);
+@@ -301,18 +301,18 @@ inline void streamRead(GsfInput* aStream, ClsId& aClsId)
throw(UT_Error) {
+ #include "ut_debugmsg.h"
+
+ // for completeness...
+-inline void streamRead(GsfInput* aStream, char* aBuffer, UT_uint32 length)
throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, char* aBuffer, UT_uint32 length)
noexcept(false) {
+ if (!gsf_input_read(aStream, length, reinterpret_cast<guint8
*>(aBuffer)))
+ throw UT_IE_BOGUSDOCUMENT;
+ }
+
+-inline void streamRead(GsfInput* aStream, UT_uint8* aBuffer, UT_uint32
length) throw(UT_Error) {
++inline void streamRead(GsfInput* aStream, UT_uint8* aBuffer, UT_uint32
length) noexcept(false) {
+ if (!gsf_input_read(aStream, length, static_cast<guint8*>(aBuffer)))
+ throw UT_IE_BOGUSDOCUMENT;
+ }
+
+ // readRecSize must have been called already. readFlagRec must not.
+ // aEoa = position of the end of the attr.
+-void streamRead(GsfInput* aStream, TextAttr& aAttr, gsf_off_t aEoa)
throw(UT_Error);
++void streamRead(GsfInput* aStream, TextAttr& aAttr, gsf_off_t aEoa)
noexcept(false);
+
+ #endif /* IE_IMP_STAROFFICE_H */
+diff --git a/src/af/util/xp/ut_iconv.cpp b/src/af/util/xp/ut_iconv.cpp
+index 96054a7..515ccc0 100644
+--- a/src/af/util/xp/ut_iconv.cpp
++++ b/src/af/util/xp/ut_iconv.cpp
+@@ -73,7 +73,7 @@ auto_iconv::auto_iconv(UT_iconv_t iconv)
+ /*!
+ * Convert characters from in_charset to out_charset
+ */
+-auto_iconv::auto_iconv(const char * in_charset, const char *out_charset)
throw(UT_iconv_t)
++auto_iconv::auto_iconv(const char * in_charset, const char *out_charset)
noexcept(false)
+ {
+ m_h = UT_ICONV_INVALID;
+
+diff --git a/src/af/util/xp/ut_iconv.h b/src/af/util/xp/ut_iconv.h
+index 2ab4af3..f5ac858 100644
+--- a/src/af/util/xp/ut_iconv.h
++++ b/src/af/util/xp/ut_iconv.h
+@@ -43,8 +43,7 @@ class ABI_EXPORT auto_iconv
+
+ explicit auto_iconv(UT_iconv_t iconv);
+
+- explicit auto_iconv(const char * in_charset, const char *out_charset)
+- throw(UT_iconv_t);
++ explicit auto_iconv(const char * in_charset, const char *out_charset)
noexcept(false);
+ ~auto_iconv();
+ operator UT_iconv_t();
+
diff -Nru abiword-3.0.4~dfsg/debian/patches/series
abiword-3.0.4~dfsg/debian/patches/series
--- abiword-3.0.4~dfsg/debian/patches/series 2021-01-25 03:50:44.000000000
+0100
+++ abiword-3.0.4~dfsg/debian/patches/series 2021-08-10 16:25:27.000000000
+0200
@@ -11,3 +11,4 @@
mime-types.diff
build-with-aiksaurus-1-2.patch
enchant2.patch
+0014-Remove-deprecated-throw-specifiers.patch