fix(build): disable problematic marktree assert in RelWithDebInfo builds

Workaround (not a fix) for #27196 and for #33067

Asserts are meant to apply to debug builds but not release
builds for users. However the intermediate RelWithDebInfo
build type is quite often used by end users, so we might
want to disable certain problematic asserts there, while
still preserving them in Debug mode for CI.
This commit is contained in:
bfredl
2025-06-14 11:44:41 +02:00
parent 90b682891d
commit 576e8f62c2
3 changed files with 11 additions and 2 deletions

View File

@ -156,8 +156,8 @@ set(NVIM_API_PRERELEASE true)
# We _want_ assertions in RelWithDebInfo build-type. # We _want_ assertions in RelWithDebInfo build-type.
if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG) if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES DNDEBUG)
string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") string(REPLACE "-DNDEBUG" "-DRELDEBUG" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") string(REPLACE "/DNDEBUG" "/DRELDEBUG" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE " " " " CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") # Remove duplicate whitespace string(REPLACE " " " " CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") # Remove duplicate whitespace
endif() endif()

View File

@ -1068,7 +1068,10 @@ void buf_signcols_count_range(buf_T *buf, int row1, int row2, int add, TriState
int prevwidth = MIN(SIGN_SHOW_MAX, count[i] - add); int prevwidth = MIN(SIGN_SHOW_MAX, count[i] - add);
if (clear != kNone && prevwidth > 0) { if (clear != kNone && prevwidth > 0) {
buf->b_signcols.count[prevwidth - 1]--; buf->b_signcols.count[prevwidth - 1]--;
#ifndef RELDEBUG
// TODO(bfredl): correct marktree splicing so that this doesn't fail
assert(buf->b_signcols.count[prevwidth - 1] >= 0); assert(buf->b_signcols.count[prevwidth - 1] >= 0);
#endif
} }
int width = MIN(SIGN_SHOW_MAX, count[i]); int width = MIN(SIGN_SHOW_MAX, count[i]);
if (clear != kTrue && width > 0) { if (clear != kTrue && width > 0) {

View File

@ -372,7 +372,13 @@ static void unintersect_node(MarkTree *b, MTNode *x, uint64_t id, bool strict)
} }
} }
if (strict) { if (strict) {
#ifndef RELDEBUG
// TODO(bfredl): This assert has been seen to fail for end users
// using RelWithDebInfo builds. While indicating an invalid state for
// the marktree, this error doesn't need to be fatal. The assert still
// needs to present in Debug builds to be able to detect regressions in tests.
assert(seen); assert(seen);
#endif
} }
if (seen) { if (seen) {