aboutsummaryrefslogtreecommitdiff
path: root/stdlib/text.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-12-17 14:24:37 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-12-17 14:24:37 -0500
commitaa262344712be27afc02441a309ddde03fa2bec9 (patch)
treede9a2f90d415bb6cdac6a76815d2dff0d29b2273 /stdlib/text.c
parentd3eb8b8339b9f2aa1702cd6e38cc12448eff5882 (diff)
Minor cleanups and fixes to RNG, chacha, and text
Diffstat (limited to 'stdlib/text.c')
-rw-r--r--stdlib/text.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/stdlib/text.c b/stdlib/text.c
index f4789ff0..4879ead9 100644
--- a/stdlib/text.c
+++ b/stdlib/text.c
@@ -206,13 +206,13 @@ public int32_t get_synthetic_grapheme(const ucs4_t *codepoints, int64_t utf32_le
PUREFUNC static inline int64_t num_subtexts(Text_t t)
{
if (t.tag != TEXT_SUBTEXT) return 1;
- int64_t len = t.length;
- int64_t n = 0;
- while (len > 0) {
- len -= t.subtexts[n].length;
- ++n;
+ int64_t remaining = t.length;
+ int64_t subtexts = 0;
+ while (remaining > 0) {
+ remaining -= t.subtexts[subtexts].length;
+ ++subtexts;
}
- return n;
+ return subtexts;
}
int text_visualize(FILE *stream, Text_t t)
@@ -402,9 +402,8 @@ public Text_t Text$_concat(int n, Text_t items[n])
if (n == 1) return items[0];
if (n == 2) return concat2(items[0], items[1]);
- int64_t len = 0, subtexts = 0;
+ int64_t subtexts = 0;
for (int i = 0; i < n; i++) {
- len += items[i].length;
if (items[i].length > 0)
subtexts += num_subtexts(items[i]);
}
@@ -412,14 +411,14 @@ public Text_t Text$_concat(int n, Text_t items[n])
Text_t ret = {
.length=0,
.tag=TEXT_SUBTEXT,
- .subtexts=GC_MALLOC(sizeof(Text_t[len])),
+ .subtexts=GC_MALLOC(sizeof(Text_t[subtexts])),
};
int64_t sub_i = 0;
for (int i = 0; i < n; i++) {
if (items[i].length == 0)
continue;
- if (i > 0 && unlikely(!is_concat_stable(items[i-1], items[i]))) {
+ if (i > 0 && unlikely(!is_concat_stable(ret, items[i]))) {
// Oops, guess this wasn't stable for concatenation, let's break it
// up into subtasks:
return concat2(ret, Text$_concat(n-i, &items[i]));