]> Kevux Git Server - fll/commitdiff
Bugfix: FSS Basic List and FSS Extended List print comment at the start of the Content.
authorKevin Day <kevin@kevux.org>
Wed, 31 Jan 2024 05:41:52 +0000 (23:41 -0600)
committerKevin Day <kevin@kevux.org>
Wed, 31 Jan 2024 05:41:52 +0000 (23:41 -0600)
When the Content exists at the start of the Content, the comment character ('#') is printed when it should not be printed.

This is a bug where the code initializes the newline_last at the range.start.
The code logic then always expects the newline_last to represent an actual new line.
This is not necessarily the case for when newline_last is pointing to the initial range.start position.

Add a check when processing a comment to ensure that the newline_last is in fact a new line.

level_1/fl_fss/c/fss/basic_list.c
level_1/fl_fss/c/fss/extended_list.c

index e91b35e84c4be40d447e2d62a03c7bfbcf0699d4..17d4beef272a2bb563f5440f34d5db91e399cae2 100644 (file)
@@ -231,7 +231,14 @@ extern "C" {
       }
 
       if (graph_first == 0x1 && buffer.string[range->start] == f_fss_comment_s.string[0]) {
-        start = newline_last + 1;
+
+        // The newline_last is initialized to the range->start, which may not actually be a new line.
+        if (buffer.string[newline_last] == f_string_eol_s.string[0]) {
+          start = newline_last + 1;
+        }
+        else {
+          start = newline_last;
+        }
 
         status = f_fss_seek_to_eol(state, buffer, range);
         if (F_status_is_error(status)) break;
index f3eb721eedfeece0d07efab5099e6fe4bc26f6ab..34f88b670cbf57da558146135c2614252c62b563 100644 (file)
@@ -185,7 +185,14 @@ extern "C" {
       }
 
       if (buffer.string[range->start] == f_fss_comment_s.string[0]) {
-        start = newline_last + 1;
+
+        // The newline_last is initialized to the range->start, which may not actually be a new line.
+        if (buffer.string[newline_last] == f_string_eol_s.string[0]) {
+          start = newline_last + 1;
+        }
+        else {
+          start = newline_last;
+        }
 
         status = f_fss_seek_to_eol(state, buffer, range);
         if (F_status_is_error(status)) break;