string library bugfixes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 6 Dec 2020 04:29:40 +0000 (22:29 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 6 Dec 2020 04:29:40 +0000 (22:29 -0600)
core/string.onyx

index f6ede261cddd97c7274e472cf8fb35fc59cc173a..7a7b742fcd47bdde7a5d9a73224d4937bea692a0 100644 (file)
@@ -97,6 +97,15 @@ string_equal :: proc (str1: string, str2: string) -> bool {
     return true;
 }
 
+string_starts_with :: proc (str1: string, str2: string) -> bool {
+    if str1.count < str2.count do return false;
+    while i := 0; i < str2.count {
+        if str1[i] != str2[i] do return false;
+        i += 1;
+    }
+    return true;
+}
+
 string_strip_leading_whitespace :: proc (str: ^string) {
     while true do switch str.data[0] {
         case #char " ", #char "\t", #char "\n", #char "\r" {
@@ -337,11 +346,13 @@ string_read_line :: proc (str: ^string, out: ^string) {
 }
 
 string_advance_line :: proc (str: ^string) {
+    if str.count == 0 do return;
+
     adv := 0;
     while str.data[adv] != #char "\n" do adv += 1;
 
-    str.data += adv;
-    str.count -= adv;
+    str.data += adv + 1;
+    str.count -= adv + 1;
 }
 
 string_read :: proc {