From 432924194959de0e25187d4bb999b9794bec553a Mon Sep 17 00:00:00 2001 From: Eric Callahan Date: Fri, 6 Oct 2023 12:25:26 -0400 Subject: [PATCH] confighelper: fix inline comment parsing Require that inline comments be separated from configuration data by whitespace. Unescape comment specifiers that follow the correct escape sequence. Signed-off-by: Eric Callahan --- moonraker/confighelper.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/moonraker/confighelper.py b/moonraker/confighelper.py index 92b02470b..009891159 100644 --- a/moonraker/confighelper.py +++ b/moonraker/confighelper.py @@ -952,13 +952,12 @@ def _parse_file( # ignore lines that contain only whitespace/comments continue line = line.expandtabs(tabsize=4) - # Remove inline comments - for prefix in "#;": - icmt = line.find(prefix) - if icmt > 0 and line[icmt-1] != "\\": - # inline comment, remove it - line = line[:icmt] - break + # Search for and remove inline comments + cmt_match = re.search(r" +[#;]", line) + if cmt_match is not None: + line = line[:cmt_match.start()] + # Unescape prefix chars that are preceded by whitespace + line = re.sub(r" \\(#|;)", r" \1", line) line_indent = len(line) - len(line.lstrip()) if opt_indent != -1 and line_indent > opt_indent: # Multi-line value, append to buffer and resume parsing