Commit 2efec4ce7bb31524d55596051adfe9fc3d6dacb1
Committed by
Jay Berkenbilt
1 parent
af42fe9d
Fix C++ exception handling when -fvisibility=hidden (#302)
Fix C++ exception handling when -fvisibility=hidden
Ensure that QPDFExc and QPDFSystemError are marked visible, so that their typeinfo will not be
suppressed when -fvisibility=hidden.
Details:
https://gcc.gnu.org/wiki/Visibility
Showing
3 changed files
with
7 additions
and
2 deletions
include/qpdf/DLL.h
| @@ -25,8 +25,13 @@ | @@ -25,8 +25,13 @@ | ||
| 25 | 25 | ||
| 26 | #if defined(_WIN32) && defined(DLL_EXPORT) | 26 | #if defined(_WIN32) && defined(DLL_EXPORT) |
| 27 | # define QPDF_DLL __declspec(dllexport) | 27 | # define QPDF_DLL __declspec(dllexport) |
| 28 | +# define QPDF_DLL_EXCEPTION | ||
| 29 | +#elif __GNUC__ >= 4 | ||
| 30 | +# define QPDF_DLL __attribute__ ((visibility ("default"))) | ||
| 31 | +# define QPDF_DLL_EXCEPTION __attribute__ ((visibility ("default"))) | ||
| 28 | #else | 32 | #else |
| 29 | # define QPDF_DLL | 33 | # define QPDF_DLL |
| 34 | +# define QPDF_DLL_EXCEPTION | ||
| 30 | #endif | 35 | #endif |
| 31 | 36 | ||
| 32 | #endif /* QPDF_DLL_HH */ | 37 | #endif /* QPDF_DLL_HH */ |
include/qpdf/QPDFExc.hh
include/qpdf/QPDFSystemError.hh
| @@ -29,7 +29,7 @@ | @@ -29,7 +29,7 @@ | ||
| 29 | #include <string> | 29 | #include <string> |
| 30 | #include <stdexcept> | 30 | #include <stdexcept> |
| 31 | 31 | ||
| 32 | -class QPDFSystemError: public std::runtime_error | 32 | +class QPDF_DLL_EXCEPTION QPDFSystemError: public std::runtime_error |
| 33 | { | 33 | { |
| 34 | public: | 34 | public: |
| 35 | QPDF_DLL | 35 | QPDF_DLL |