]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve string slices
authorJérémie Astor <fennecdjay@gmail.com>
Thu, 18 Nov 2021 16:55:50 +0000 (17:55 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Thu, 18 Nov 2021 16:55:50 +0000 (17:55 +0100)
src/lib/string.c

index e5a5287b8edc0b37fc36cf48ef320ed706fd242b..605599409b899a8514eb45baefda6af65d037f4b 100644 (file)
@@ -87,13 +87,13 @@ static INSTR(StringSlice) {
     return;
   }
   const m_int  op = start < end ? 1 : -1;
-  const m_uint sz = op > 0 ? end - start : start - end;
+  const m_uint sz = (op > 0 ? end - start : start - end) + 1;
   if(sz >= SIZE_MAX/SZ_INT) {
     handle(shred, "SliceTooBig");
     return;
   }
   char         c[sz + 1];
-  for (m_int i = start, j = 0; i != end; i += op, ++j) c[j] = str[i];
+  for (m_int i = start, j = 0; j < (m_int)sz; i += op, ++j) c[j] = str[i];
   c[sz]                     = '\0';
   *(M_Object *)REG(-SZ_INT) = new_string(shred->info->vm->gwion, c);
 }