From 3e7734037cce144dd04f6debe22e5b1703598914 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 11 Feb 2026 07:47:49 +0000 Subject: [PATCH] sv: rearrange sv_substr and sv_truncate --- include/alisp/sv.h | 2 +- src/sv.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/alisp/sv.h b/include/alisp/sv.h index aac6777..72f7f07 100644 --- a/include/alisp/sv.h +++ b/include/alisp/sv.h @@ -29,8 +29,8 @@ typedef struct sv_t sv_copy(sv_t); sv_t sv_chop_left(sv_t, u64 size); sv_t sv_chop_right(sv_t, u64 size); -sv_t sv_substr(sv_t, u64 position, u64 size); sv_t sv_truncate(sv_t, u64 newsize); +sv_t sv_substr(sv_t, u64 position, u64 size); sv_t sv_till(sv_t, const char *reject); sv_t sv_while(sv_t, const char *accept); diff --git a/src/sv.c b/src/sv.c index e9e8073..d295af7 100644 --- a/src/sv.c +++ b/src/sv.c @@ -36,18 +36,19 @@ sv_t sv_chop_right(sv_t sv, u64 size) return SV(sv.data, sv.size - size); } -sv_t sv_substr(sv_t sv, u64 position, u64 size) -{ - return sv_truncate(sv_chop_left(sv, position), size); -} - sv_t sv_truncate(sv_t sv, u64 newsize) { - if (newsize >= sv.size) - return sv; + if (newsize > sv.size) + return SV(NULL, 0); return SV(sv.data, newsize); } +sv_t sv_substr(sv_t sv, u64 position, u64 size) +{ + sv_t result = sv_truncate(sv_chop_left(sv, position), size); + return result; +} + sv_t sv_till(sv_t sv, const char *reject) { if (sv.size == 0 || !sv.data)