diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2020-01-07 16:21:31 +0100 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2020-01-07 16:24:16 +0100 |
commit | f2ad6eb0c579f1c825aa1efec192b4d4eb5e6171 (patch) | |
tree | d22e13ea32624ac3a0e783af4c480ec54bf1fbfa /apt-pkg | |
parent | 507f9ae50fb0078d41ac308ab8e68caacab2acd2 (diff) |
Avoid #define _error, use anonymous C++ struct instead
Replace the macro with an anonymous struct that provides an
inline operator->() returning the _error pointer.
This change is ABI compatible, and the inline macro is not
exported. We should consider if we want to avoid the function
call and directly export the thread_local variable instead,
when we do break ABI.
Closes: #948338
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/contrib/error.h | 4 | ||||
-rw-r--r-- | apt-pkg/contrib/macros.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/apt-pkg/contrib/error.h b/apt-pkg/contrib/error.h index d0f450742..b6291572e 100644 --- a/apt-pkg/contrib/error.h +++ b/apt-pkg/contrib/error.h @@ -360,6 +360,8 @@ private: /*{{{*/ // The 'extra-ansi' syntax is used to help with collisions. GlobalError *_GetErrorObj(); -#define _error _GetErrorObj() +static struct { + inline GlobalError* operator ->() { return _GetErrorObj(); } +} _error APT_UNUSED APT_PKG_590("Consider rewriting this"); #endif diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h index 4d9f780c7..c19cb313d 100644 --- a/apt-pkg/contrib/macros.h +++ b/apt-pkg/contrib/macros.h @@ -79,6 +79,7 @@ #define APT_NORETURN __attribute__((noreturn)) #define APT_PRINTF(n) __attribute__((format(printf, n, n + 1))) #define APT_WEAK __attribute__((weak)); + #define APT_UNUSED __attribute__((unused)) #else #define APT_DEPRECATED #define APT_DEPRECATED_MSG @@ -87,6 +88,7 @@ #define APT_NORETURN #define APT_PRINTF(n) #define APT_WEAK + #define APT_UNUSED #endif #if APT_GCC_VERSION > 0x0302 |