diff --git a/lib/mem/copy.q b/lib/mem/copy.q new file mode 100644 index 0000000..c85aa43 --- /dev/null +++ b/lib/mem/copy.q @@ -0,0 +1,11 @@ +copy(to string, from string) { + len := from.len + + if to.len < len { + len = to.len + } + + loop i := 0..len { + to[i] = from[i] + } +} \ No newline at end of file diff --git a/lib/strings/concat.q b/lib/strings/concat.q index 3f7c537..cba4eb1 100644 --- a/lib/strings/concat.q +++ b/lib/strings/concat.q @@ -2,14 +2,7 @@ import mem concat(a string, b string) -> !string { combined := mem.alloc(a.len + b.len) - - loop i := 0..a.len { - combined[i] = a[i] - } - - loop i := 0..b.len { - combined[a.len+i] = b[i] - } - + mem.copy(combined, a) + mem.copy(combined[a.len..], b) return combined } \ No newline at end of file