WARNING: usfm codes in \rem paragraphs may cause a crash

I’ve just tracked down the cause of a crash on someone’s project to a line Unfortunately there was a think-o when someone was writing the template for FRT books, and this line was included:

\rem sorta will sort by \toc1, sortb by \toc2, sortc by \toc3

This is pretty much guaranteed to cause a crash / undefined behaviour.

If you have a Front matter that includes that line, change it so that it reads:
\rem sorta will sort by toc1, sortb by toc2 , sortc by toc3
I.e. remove the slashes. Otherwise you will experience crashes.

Earlier versions of the USFM standard were a bit vague, but Paratext and the USFM-3 standard do NOT describe \rem as ‘ignore the rest of this line’, but as a paragraph style that produces no output.
This means:

  1. \rem continues until the next paragraph marker
  2. \rem still has to process any markers it contains. (how else will it spot the next paragraph-marker?).
  3. Since \toc1 and friends are also described as paragraph markers (although not used as such) they should cancel \rem

Correction… Point 3 above is probably incorrect. The standard states that “All paragraph markers should be preceded by a single newline.” Therefore, I feel that it is legitimate for the code to entirely ignore \toc1 etc. in the above situation.
I’m just submitting a small change (which will be available in a week or so, I guess), which obeys the following logic:

  1. USFM codes occurring after \rem and on the same line will be ignored.
  2. After that 1st line, \rem will continue as it has been doing until now: ignoring text but acting on any USFM codes met.
  3. \toc1 etc. are now recognised as paragraph breaks.