diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 67b05d034..53edbc786 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -2303,8 +2303,12 @@ inp_stripcomments_deck(struct card *c, bool cf) the whole line is converted to a normal comment line (i.e. one that begins with a '*'). BUG: comment characters in side of string literals are not ignored - ('$' outside of .control section is o.k. however). */ + ('$' outside of .control section is o.k. however). + If the comaptibility mode is PS, LTPS or LTPSA, '$' is treated as a valid + character, not a s end-of-line comment delimiter, except for that it is + located at the beginning of a line. If inside of a control section, + still '$ ' is read a an end-of-line comment delimiter.*/ static void inp_stripcomments_line(char *s, bool cs) { @@ -2319,7 +2323,12 @@ inp_stripcomments_line(char *s, bool cs) d++; if (*d == ';') { break; - } else if (!cs && (c == '$')) { /* outside of .control section */ + } + /* outside of .control section, and not in PS mode */ + else if (!cs && (c == '$') && + inp_compat_mode != COMPATMODE_PS && + inp_compat_mode != COMPATMODE_LTPS && + inp_compat_mode != COMPATMODE_LTPSA) { /* The character before '&' has to be ',' or ' ' or tab. A valid numerical expression directly before '$' is not yet supported. */ if ((d - 2 >= s) && ((d[-2] == ' ') || (d[-2] == ',') || (d[-2] == '\t'))) {