From: Steffan Karger <[email protected]>
Adding polar_ok() was a good plan for improving error reporting, but also
added two function calls (one to polar_log_func_line() and one to
polar_log_err()) for each function call wrapped with polar_ok().
Especially in the critical path, this is a waste of time.
To avoid this overhead, add a simple static inline wrapper to reduce it to
a single branch.
v2 - use a static inline wrapper to prevent evaluating 'errval' twice in
the macro.
Signed-off-by: Steffan Karger <[email protected]>
---
src/openvpn/crypto_polarssl.h | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/openvpn/crypto_polarssl.h b/src/openvpn/crypto_polarssl.h
index bd0f8b8..94306ed 100644
--- a/src/openvpn/crypto_polarssl.h
+++ b/src/openvpn/crypto_polarssl.h
@@ -115,6 +115,15 @@ bool polar_log_err(unsigned int flags, int errval, const
char *prefix);
bool polar_log_func_line(unsigned int flags, int errval, const char *func,
int line);
+/** Wraps polar_log_func_line() to prevent function calls for non-errors */
+static inline bool polar_log_func_line_lite(unsigned int flags, int errval,
+ const char *func, int line) {
+ if (errval) {
+ return polar_log_func_line (flags, errval, func, line);
+ }
+ return true;
+}
+
/**
* Check errval and log on error.
*
@@ -128,7 +137,7 @@ bool polar_log_func_line(unsigned int flags, int errval,
const char *func,
* @returns true if no errors are detected, false otherwise.
*/
#define polar_ok(errval) \
- polar_log_func_line(D_CRYPT_ERRORS, errval, __func__, __LINE__)
+ polar_log_func_line_lite(D_CRYPT_ERRORS, errval, __func__, __LINE__)
#endif /* CRYPTO_POLARSSL_H_ */
--
2.5.0