results: fix Debug rendering assertion
Check the character in the output string instead of referring to a nonexistent grid_ member. This restores Debug compilation while preserving the intended invariant that rendering must not write an identical character twice. Size labels intentionally replace interior spaces, so requiring an entirely unwritten destination would reject valid solutions. Update the testing notes now that Debug builds pass. Tests: Debug and Release CTest suites (4 passed each) Refs: #7
This commit was merged in pull request #18.
This commit is contained in:
+3
-3
@@ -38,6 +38,6 @@ ctest --test-dir build-ubsan --output-on-failure
|
||||
```
|
||||
|
||||
The sanitizer flags shown are supported by Clang and GCC. Other compilers may
|
||||
require different flags. Debug compilation and a feasible solver run currently
|
||||
expose the pre-existing defects tracked by issues #7 and #14 respectively; the
|
||||
test additions deliberately do not include fixes for those separate issues.
|
||||
require different flags. A feasible solver run currently exposes the
|
||||
pre-existing defect tracked by issue #14; the test additions deliberately do
|
||||
not include its separate fix.
|
||||
|
||||
@@ -85,7 +85,8 @@ namespace {
|
||||
auto set(std::string &s, size_t x, size_t y, char c) const noexcept -> void {
|
||||
assert(x < length_);
|
||||
assert(y < length_);
|
||||
assert(grid_[x + y * length_] != c);
|
||||
// Size labels may replace interior spaces, but must not duplicate a write.
|
||||
assert(s[x + y * length_] != c);
|
||||
s[x + y * length_] = c;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user