]> Kevux Git Server - fll/commitdiff
Bugfix: UTF-8 characters buffer is incorrectly returning an error.
authorKevin Day <thekevinday@gmail.com>
Wed, 5 May 2021 05:00:40 +0000 (00:00 -0500)
committerKevin Day <thekevinday@gmail.com>
Wed, 5 May 2021 05:00:40 +0000 (00:00 -0500)
The previous commit: "Bugfix: UTF-8 characters are not being fully printed" exposed that for UTF-8 characters (width 2 or greater), an error is always returned.

When the width properly fits in the requested range, return the appropriate success code instead of an error.

level_0/f_utf/c/utf.c

index 876c71be5a7052849949594e4dfae21c2c88a7c3..a6e2d86de1d8b8c048951d71aac71e381b9df49a 100644 (file)
@@ -23,7 +23,7 @@ extern "C" {
       width = macro_f_utf_byte_width(buffer.string[range->start - 1]);
 
       if (width > range->start) {
-        if (width > 1) {
+        if (width > 1 && width > range->start + 1) {
           return F_status_set_error(F_complete_not_utf_eos);
         }
 
@@ -57,7 +57,7 @@ extern "C" {
       width = macro_f_utf_byte_width(buffer.string[range->start]);
 
       if (range->start + width > range->stop) {
-        if (width > 1) {
+        if (width > 1 && range->start + width > range->stop + 1) {
           return F_status_set_error(F_complete_not_utf_stop);
         }
 
@@ -65,7 +65,7 @@ extern "C" {
         return F_none_stop;
       }
       else if (range->start + width >= buffer.used) {
-        if (width > 1) {
+        if (width > 1 && range->start + width >= buffer.used + 1) {
           return F_status_set_error(F_complete_not_utf_eos);
         }