changeset 31487:2ec625c04947 stable

Mark exceptions with default visibility also where they are used (bug #61704). For exceptions that are thrown across library borders to work correctly, the definition of those exceptions needs to be attributed with default visibility both in the library where they are defined and in the code where they are caught. * oct-conf-post-public.in.h: Add new preprocessor macros for visibility attributes of exception classes. * liboctave/util/quit.h (execution_exception), liboctave/util/lo-array-errwarn.h (index_exception): Use new preprocessor macro to flag exception classes that are thrown across library borders.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 19 Nov 2022 16:55:11 +0100
parents 8acc0fd58ba2
children d5415300e53b 45c9efbc5501
files liboctave/util/lo-array-errwarn.h liboctave/util/quit.h oct-conf-post-public.in.h
diffstat 3 files changed, 32 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/util/lo-array-errwarn.h	Sat Nov 19 17:17:33 2022 +0100
+++ b/liboctave/util/lo-array-errwarn.h	Sat Nov 19 16:55:11 2022 +0100
@@ -41,7 +41,7 @@
   // Typically, this should be caught after any call to
   // octave_value_list::index_vector()
 
-  class index_exception : public execution_exception
+  class OCTAVE_EXCEPTION_API index_exception : public execution_exception
   {
   public:
 
--- a/liboctave/util/quit.h	Sat Nov 19 17:17:33 2022 +0100
+++ b/liboctave/util/quit.h	Sat Nov 19 16:55:11 2022 +0100
@@ -89,7 +89,7 @@
             && a.column () == b.column ());
   }
 
-  class OCTAVE_API execution_exception : public std::runtime_error
+  class OCTAVE_EXCEPTION_API execution_exception : public std::runtime_error
   {
   public:
 
--- a/oct-conf-post-public.in.h	Sat Nov 19 17:17:33 2022 +0100
+++ b/oct-conf-post-public.in.h	Sat Nov 19 16:55:11 2022 +0100
@@ -137,6 +137,7 @@
 /* API macros for liboctave */
 #if defined (OCTAVE_DLL)
 #  define OCTAVE_API OCTAVE_EXPORT
+#  define OCTAVE_EXCEPTION_API OCTAVE_EXPORT
 #  if defined (_WIN32) || defined (__CYGWIN__)
 #    define OCTAVE_TEMPLATE_API
 #    if defined(__MINGW32__)
@@ -155,6 +156,11 @@
 #  endif
 #else
 #  define OCTAVE_API OCTAVE_IMPORT
+#  if defined (_WIN32) || defined (__CYGWIN__)
+#    define OCTAVE_EXCEPTION_API OCTAVE_IMPORT
+#  else
+#    define OCTAVE_EXCEPTION_API OCTAVE_EXPORT
+#  endif
 #  define OCTAVE_TEMPLATE_API
 #  define OCTAVE_EXTERN_TEMPLATE_API OCTAVE_IMPORT
 #  define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API
@@ -164,6 +170,7 @@
 /* API macros for liboctinterp */
 #if defined (OCTINTERP_DLL)
 #  define OCTINTERP_API OCTAVE_EXPORT
+#  define OCTINTERP_EXCEPTION_API OCTAVE_EXPORT
 #  if defined (_WIN32) || defined (__CYGWIN__)
 #    define OCTINTERP_TEMPLATE_API
 #    if defined(__MINGW32__)
@@ -182,6 +189,11 @@
 #  endif
 #else
 #  define OCTINTERP_API OCTAVE_IMPORT
+#  if defined (_WIN32) || defined (__CYGWIN__)
+#    define OCTINTERP_EXCEPTION_API OCTAVE_IMPORT
+#  else
+#    define OCTINTERP_EXCEPTION_API OCTAVE_EXPORT
+#  endif
 #  define OCTINTERP_TEMPLATE_API
 #  define OCTINTERP_EXTERN_TEMPLATE_API OCTAVE_IMPORT
 #  define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API
@@ -191,6 +203,7 @@
 /* API macros for the Array class in liboctave and liboctinterp */
 #if (defined (OCTAVE_DLL) || defined (OCTINTERP_DLL))
 #  define OCTARRAY_API OCTAVE_EXPORT
+#  define OCTARRAY_EXCEPTION_API OCTAVE_EXPORT
 #  if defined (_WIN32) || defined (__CYGWIN__)
 #    define OCTARRAY_TEMPLATE_API
 #    if defined(__MINGW32__)
@@ -209,6 +222,11 @@
 #  endif
 #else
 #  define OCTARRAY_API OCTAVE_IMPORT
+#  if defined (_WIN32) || defined (__CYGWIN__)
+#    define OCTARRAY_EXCEPTION_API OCTAVE_IMPORT
+#  else
+#    define OCTARRAY_EXCEPTION_API OCTAVE_EXPORT
+#  endif
 #  define OCTARRAY_TEMPLATE_API
 #  define OCTARRAY_EXTERN_TEMPLATE_API OCTAVE_IMPORT
 #  define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API
@@ -218,6 +236,7 @@
 /* API macros for libinterp/graphics */
 #if defined (OCTGRAPHICS_DLL)
 #  define OCTGRAPHICS_API OCTAVE_EXPORT
+#  define OCTGRAPHICS_EXCEPTION_API OCTAVE_EXPORT
 #  if defined (_WIN32) || defined (__CYGWIN__)
 #    define OCTGRAPHICS_TEMPLATE_API
 #    if defined(__MINGW32__)
@@ -236,6 +255,11 @@
 #  endif
 #else
 #  define OCTGRAPHICS_API OCTAVE_IMPORT
+#  if defined (_WIN32) || defined (__CYGWIN__)
+#    define OCTGRAPHICS_EXCEPTION_API OCTAVE_IMPORT
+#  else
+#    define OCTGRAPHICS_EXCEPTION_API OCTAVE_EXPORT
+#  endif
 #  define OCTGRAPHICS_TEMPLATE_API
 #  define OCTGRAPHICS_EXTERN_TEMPLATE_API OCTAVE_IMPORT
 #  define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API
@@ -245,6 +269,7 @@
 /* API macros for libgui */
 #if defined (OCTGUI_DLL)
 #  define OCTGUI_API OCTAVE_EXPORT
+#  define OCTGUI_EXCEPTION_API OCTAVE_EXPORT
 #  if defined (_WIN32) || defined (__CYGWIN__)
 #    define OCTGUI_TEMPLATE_API
 #    if defined(__MINGW32__)
@@ -263,6 +288,11 @@
 #  endif
 #else
 #  define OCTGUI_API OCTAVE_IMPORT
+#  if defined (_WIN32) || defined (__CYGWIN__)
+#    define OCTGUI_EXCEPTION_API OCTAVE_IMPORT
+#  else
+#    define OCTGUI_EXCEPTION_API OCTAVE_EXPORT
+#  endif
 #  define OCTGUI_TEMPLATE_API
 #  define OCTGUI_EXTERN_TEMPLATE_API OCTAVE_IMPORT
 #  define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API