From 72dc5ff56aa92be55234d07ec7f945d25f3927a3 Mon Sep 17 00:00:00 2001 From: Walter Karas Date: Wed, 17 Feb 2021 20:09:15 -0600 Subject: [PATCH] Fix asserts in multiplexer plugin. --- plugins/multiplexer/dispatch.cc | 3 +-- plugins/multiplexer/dispatch.h | 28 +++++++++++++++++++++---- plugins/multiplexer/original-request.cc | 3 +-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/plugins/multiplexer/dispatch.cc b/plugins/multiplexer/dispatch.cc index d5f4c3a75fb..493501ec98f 100644 --- a/plugins/multiplexer/dispatch.cc +++ b/plugins/multiplexer/dispatch.cc @@ -86,8 +86,7 @@ copy(const TSIOBufferReader &r, const TSIOBuffer b) const void *const pointer = TSIOBufferBlockReadStart(block, r, &size); if (pointer != nullptr && size > 0) { - const int64_t size2 = TSIOBufferWrite(b, pointer, size); - assert(size == size2); + CHECK(TSIOBufferWrite(b, pointer, size) == size); length += size; } } diff --git a/plugins/multiplexer/dispatch.h b/plugins/multiplexer/dispatch.h index 0d9c4e1cfb9..4cba3919a1f 100644 --- a/plugins/multiplexer/dispatch.h +++ b/plugins/multiplexer/dispatch.h @@ -31,12 +31,32 @@ #include "ts.h" -#define CHECK(X) \ - { \ - const TSReturnCode r = static_cast(X); \ - assert(r == TS_SUCCESS); \ +#ifdef __OPTIMIZE__ + +// Optimized -- release build. + +// For CHECK(), execute any side effects (only) for expression X. +#define CHECK(X) \ + { \ + static_cast(X); \ } +// Make sure assert() disabled. +#ifndef NDEBUG +#define NDEBUG +#endif + +#else + +// Check if expression X returns a value that implicitly converts to bool false (such as TS_SUCCESS). +#define CHECK(X) \ + { \ + static_assert(!TS_SUCCESS); \ + assert(!(X)); \ + } + +#endif + struct Statistics { int failures; int hits; diff --git a/plugins/multiplexer/original-request.cc b/plugins/multiplexer/original-request.cc index f0c1943791b..542e3c239f9 100644 --- a/plugins/multiplexer/original-request.cc +++ b/plugins/multiplexer/original-request.cc @@ -93,8 +93,7 @@ OriginalRequest::urlScheme(const std::string &s) { assert(buffer_ != nullptr); assert(url_ != nullptr); - const TSReturnCode result = TSUrlSchemeSet(buffer_, url_, s.c_str(), s.size()); - assert(result == TS_SUCCESS); + CHECK(TSUrlSchemeSet(buffer_, url_, s.c_str(), s.size())); } void