Brad Arant 14697e2af2 Fix three real bugs found during a full ZString review
operator< computed end2 as valuex.getData() + valuex.getLength() - mixing
an absolute pointer (getData(), the buffer start) with a cursor-relative
length (getLength(), remaining-from-cursor). For any ZString with a
non-zero cursor offset this produces an end pointer short of the true
buffer end by exactly the amount already consumed, truncating the
comparison early. Fixed to use valuex.data + valuex.length (the true
end), matching how end1 was already computed for *this. operator<=,
>=, and > were separately broken (flagged by the codes own TODO
comment) - they compared via strncmp from data (ignoring cursor
entirely), inconsistent with operator< and with each other. Replaced
all three with derivations from the now-correct operator< (a <= b is
!(b < a), etc.) - guarantees trichotomy by construction instead of
three independently-written comparison loops.

substring(start, len): when the requested length overran the buffer,
computed newlen as endChar - end (the overrun amount) instead of
end - startChar (the actual remaining valid length) - backwards, and
stored into a char (max 127), silently wrapping for longer strings.
Fixed the formula and widened to size_t.

trimCRLF(): read *(data + length - 1) unconditionally, including when
length is already 0 - one byte before the buffer on an empty string.
Guarded both checks on length > 0.

Verified: full local compile (identical result to before - 13/20 clean,
same pre-existing StreamReader.h-blocked failures, nothing new broken);
a dedicated runtime test exercising all three fixes plus a trichotomy
check across multiple cursor offsets - all 13 assertions pass. Test
file not included in this commit.
2026-08-22 20:11:13 -07:00
2023-10-06 18:32:17 +00:00
2022-01-24 14:03:58 -08:00
2026-01-05 16:49:41 -08:00
2024-07-08 18:31:57 -07:00
2025-02-06 14:34:11 -08:00
2025-02-06 14:34:11 -08:00
2025-12-04 16:40:11 -08:00
2025-12-08 16:35:15 -08:00
2022-05-23 12:51:44 -07:00
2022-05-23 12:51:44 -07:00
2023-03-10 12:55:08 -08:00
2024-12-23 11:15:53 -08:00
2024-12-23 13:00:22 -08:00
2025-12-16 16:51:44 -08:00
2025-02-21 13:22:57 -08:00
2025-03-11 07:34:17 -07:00
2025-03-11 07:34:17 -07:00
2025-03-11 07:34:17 -07:00
2025-03-11 16:59:16 -07:00
2022-01-24 14:03:58 -08:00
2022-01-24 14:03:58 -08:00
2025-03-12 09:30:56 -07:00
2025-03-11 16:59:16 -07:00
2025-03-11 07:34:17 -07:00
2025-12-04 17:04:55 -08:00
2025-12-04 17:04:55 -08:00
2024-12-18 11:26:58 -08:00
2025-12-04 17:04:55 -08:00
2025-12-31 16:56:00 -08:00
2025-12-31 16:56:00 -08:00
2023-10-05 17:57:01 -07:00
2019-09-13 10:29:36 -07:00
2021-07-23 11:44:36 -07:00
2025-12-09 08:46:33 -08:00
2025-12-04 17:04:55 -08:00
2025-12-04 16:40:11 -08:00
2026-01-05 16:49:41 -08:00
2026-01-05 16:49:41 -08:00
S
Description
This repository contains the CoreUtils library. CoreUtils provides support for ServerCore, JetCore and other subsystem libraries used in higher functions.
33 MiB
0 Stars 1 Watchers 0 Forks
Languages
C++ 97.8%
Makefile 1.9%
Shell 0.3%