Fixed SIGSEGV

This commit is contained in:
deeaitch committed 2026-10-23 21:04:43 -04:00
1 parent f03882d3f4
commit 5b0019d50d
50 files changed
+1565 -821

No files matched your search

+11 -4
View File
@@ -868,6 +868,9 @@ parent selector; conflicting parent references are rejected. Multiple independen
root selectors are supported. Statements and selectors may precede or follow
their targets. Decimal values retain the full `uint64_t` range and must fit the
parent's bit width. Ranges are stored without expanding individual values.
`SG_MUL_VAL_` headers, decimal bounds, and range lists are scanned iteratively,
without regular expressions or a new statement-length limit. Long valid lists
are preserved; malformed ranges and trailing text produce source-located errors.
Malformed ranges, unresolved references, signed selectors, ambiguous implicit
selectors, and dependency cycles produce `InvalidMultiplexing` diagnostics.
Statement errors retain the `SG_MUL_VAL_` source line; graph and overlap errors
@@ -1239,7 +1242,10 @@ Each statement must occupy one physical line, contain at least one integer/text
pair, and end with a semicolon. Spaces and tabs are accepted between fields;
descriptions may contain whitespace, semicolons, and empty text. Inside quoted
text, escape a quote or a backslash with a preceding backslash; other escapes
are rejected.
are rejected. Headers, quoted descriptions, and pairs are scanned iteratively,
without regular expressions or repeatedly removing the parsed prefix. Long
valid descriptions and lists are preserved without a new length limit; malformed
input returns the same source-located diagnostics as short statements.
Keys are decimal integers in `INT64_MIN..UINT64_MAX`, with an optional minus
sign; plus signs, fractions, hexadecimal numbers, exponents, and overflow are
rejected. Keys never pass through `double`.
@@ -1397,8 +1403,8 @@ When building a consumer separately, pass
### Local core regression checks
Run `bash tests/run_core_ci.sh release` or `bash tests/run_core_ci.sh sanitize`
to build the core archive with Qt 6.8.2, run all six core QtTest suites (parser,
decoder, coverage, lifetime, validation, and pipeline/builder integration), and
to build the core archive with Qt 6.8.2, run all seven core QtTest suites (parser,
statement robustness, decoder, coverage, lifetime, validation, and pipeline/builder integration), and
run both the qmake and standalone Qt-free tree tests. The sanitizer mode uses
AddressSanitizer and UndefinedBehaviorSanitizer, with leak detection enabled by
default and fatal sanitizer errors.
@@ -1572,7 +1578,8 @@ floating-point values. Default application skips unrelated scopes, CAN ID
normalization uses the validated identifier mask, and signal layout validation
owns the length checks. Statement handlers continue to use `TypeFactory`.
Core, adapter, example, and test C++ sources use explicit return types and contain
no lambdas. Public metadata and parser-state comments use Doxygen descriptions.
no lambdas. DBC statement parsing uses iterative scanners rather than regular
expressions. Public metadata and parser-state comments use Doxygen descriptions.
See [tests/README.md](tests/README.md#extended-validation) for attribute boundary
regressions, sanitizer commands, and the latest validation results.