From f2ad6eb0c579f1c825aa1efec192b4d4eb5e6171 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 7 Jan 2020 16:21:31 +0100 Subject: 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 --- apt-pkg/contrib/error.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'apt-pkg/contrib/error.h') 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 -- cgit v1.2.3