]> Kevux Git Server - fll/commit
Bugfix: Embedded List is not properly handling delimits on write.
authorKevin Day <thekevinday@gmail.com>
Sun, 15 Nov 2020 23:36:55 +0000 (17:36 -0600)
committerKevin Day <thekevinday@gmail.com>
Sun, 15 Nov 2020 23:46:45 +0000 (17:46 -0600)
commit5dd1e6a1cd8b3c6c8a8f4d241cd39c5317a34218
tree651676f6b83ef3505519aecb346b2a97f7c3d30b
parentf00ceeff994590a98d86810bdbaaa8229a4a3edc
Bugfix: Embedded List is not properly handling delimits on write.

This is hard to observe because of how bash handles newlines.
For example:
  echo "$(echo -e "  To {\n    World\n  \\\\\\\\\\\\\\{\n")"

Would produce a string where the slashes after world actually represent a total of 4 slashes.
The problem with bash is that it "guesses" the number of slashes.
Another concern is that there are two quotes, so a slash has to be escaped twice for such a string in bash.

As a more complex example, see:
  # echo  "$(echo -e "\\\\\\\\\\\\\\")" | byte_dump -tcw 5

  Piped Byte Dump: (in Hexidecimal)
  0000000000000000  5c 5c 5c 5c 0a  | \\\\␤ |

  # echo  "$(echo -e "\\\\\\\\\\")" | byte_dump -tcw 5

  Piped Byte Dump: (in Hexidecimal)
  0000000000000000  5c 5c 5c 0a     | \\\␤  |

Once past the confusing behavior of backslash escaping in Bash, one can then observe that this project is incorrectly escaping backslashes.
In the case of Embedded List close character (the close brace '}') only the first backslash needs to be escaped.
In the case of Embedded List open character (the open brace '{') every even backslash must be escaped (and there should only be a single unescaped odd backslash).
The problem is that the code is treating the close brace as an open brace, resulting in too many backslashes.

There is also an ends of EOL boolean that appears to be being incorrectly set.
The EOL is detected at range->start position, but the position is being reset to the saved "start" position.
level_1/fl_fss/c/fss_embedded_list.c