]> Kevux Git Server - fll/commitdiff
Bugfix: If the first character has a width greater than one then F_utf_fragment is...
authorKevin Day <kevin@kevux.org>
Fri, 1 Mar 2024 05:03:54 +0000 (23:03 -0600)
committerKevin Day <kevin@kevux.org>
Fri, 1 Mar 2024 05:04:28 +0000 (23:04 -0600)
A F_utf_fragment is incorrectly when writing a string that would use quotes and that first character has a width greater than one.

The code is incrementing the string by 1.
This should instead be incrementing by the character width.
The loop itself should increment by the character width as well.

This bug has been exposed by unit tests from the 0.7 development branch.

level_1/fl_fss/c/private-fss.c

index 5ee7bb6850aeb950f27cedf270da73e2854a7dcd..1de3a7da5c1c7931a99313af4ec03e6ef847d338 100644 (file)
@@ -1085,7 +1085,7 @@ extern "C" {
       // The start quote may or may not need to be delimited in this case.
       if (destination->string[input_start] == quote_char) {
 
-        for (i = input_start + 1; i <= range->stop && i < object.used; ++i) {
+        for (i = input_start + macro_f_utf_byte_width(object.string[input_start]); i <= range->stop && i < object.used; i += macro_f_utf_byte_width(object.string[i])) {
 
           if (state.interrupt) {
             status = state.interrupt((void *) &state, 0);