Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
SoBase::removeAuditor(auditor, type) currently ignores type. When a pointer has registrations with different types, removal can delete the wrong registration. Tree rotations also mean equal keys can appear on either side, so a pointer/data search must inspect both equal-key subtrees.
Changes
Both key and data may be null and remain borrowed. Existing signatures/layout are preserved; the added C symbol is exported. The C client is compiled as C and linked with the C++ driver so the instrumented Coin library can resolve its vptr runtime. The final comment-only commit restores documentation to the public removal function.
Dependencies — keep as draft
Requires the SoBase cache PR #821 and #813. This branch includes both prerequisites, so its current diff against master is cumulative. Rebase after the prerequisites are integrated before marking ready.
Validation
Linux candidate 90/90 CTests, individual integration lab 134/134. The C symbol was linked and checked with nm. A diagnostic implementation that ignored type failed the regression. Nullable C clients passed ASan/UBSan/LeakSanitizer. The final publication integration gate is recorded below; the comment-only refinement preserves executable source tokens.
Final publication gate — 2026-10-08
The exact published heads, merged over the existing integration lab, passed 13/13 directed CTests and 139/139 total CTests, with no skips. GCC/Ninja Debug shared build, COIN_THREADSAFE=ON, external Expat, all build/compiler temporary files in RAM. The GLX test environment used Xvfb, LIBGL_ALWAYS_SOFTWARE=1 and COIN_GLX_PIXMAP_DIRECT_RENDERING=1. The initial full run omitted the latter setting and failed to create GLX contexts; the corrected environment passed without code changes. Integration commit: bc83f34.
Native Windows/macOS and ABI checks are left to this PR's CI.
Typed-removal delta after the cache prerequisite (this comparison also includes #813).