]> Kevux Git Server - fll/commitdiff
Bugfix: The FSS Embedded Read is incorrectly handling empty Content.
authorKevin Day <Kevin@kevux.org>
Tue, 20 Aug 2024 23:58:06 +0000 (18:58 -0500)
committerKevin Day <Kevin@kevux.org>
Wed, 21 Aug 2024 01:03:21 +0000 (20:03 -0500)
The empty Content is being incorrectly handled as noted in the 0.6 commit 93a70bece8ecdb30801744e492fec8bb2601d2a4.

The '}' gets printed on empty Content, which is invalid.
Set the range to out of range when the start position is the line start.
This should only happen for empty Content because valid Content is only closed when '}' is on its own line.

level_1/fl_fss/c/fss/embedded_list.c

index 5d6ed999f987f34811eb66784235308ba0c785c2..ca20a75b5e4c0b0f1f429c7aec33865101cd3f4d 100644 (file)
@@ -576,8 +576,16 @@ extern "C" {
             found->depth[depth].array[position].object.stop = cache->objects->array[depth].stop;
           }
 
-          found->depth[depth].array[position].content.array[0].start = cache->positions->array[depth];
-          found->depth[depth].array[position].content.array[0].stop = newline_last;
+          // The Content is empty when line_start is the same as the start position.
+          if (line_start == cache->positions->array[depth]) {
+            found->depth[depth].array[position].content.array[0].start = 1;
+            found->depth[depth].array[position].content.array[0].stop = 0;
+          }
+          else {
+            found->depth[depth].array[position].content.array[0].start = cache->positions->array[depth];
+            found->depth[depth].array[position].content.array[0].stop = newline_last;
+          }
+
           found->depth[depth].array[position].content.used = 1;
 
           if (position >= found->depth[depth].used) {