Remarkup Engine: Undefined Index Exception

Reproduction Instructions
(1) Go to https://secure.phabricator.com/
(2) Try to comment a random task with this text:

Jede Übung hat am Anfang eine kleine Beschreibung mit Elementen, die diese Übung enthält:

  - **Punkte**: Punktgewinn bei richtigen Antworten, Punktverlust bei falschen Antworten
  - **Countdown**: Zeitbegrenzung innerhalb der Übung
  - **Hilfe**: Hilfestellung für richtige Lösung / Grammatik-Tipp
  - **Audio**: Abspielen von Tönen oder gesprochenen Wörtern und Sätzen
  - **Joker**: Tipp zum gesuchten Wort anzeigen
  - **Bild**: Anzeigen von Bildern zum Übungsinhalt

Punkte sind natürlich Teil jeder Übung. Ansonsten verteilen sich die Elemente das so auf die Übungsypen:

| Typ   | Countdown | Hilfe | Audio | Joker |  Bild |
|-------|-----------|-------|-------|-------|-------|
| 1a+b  |  | ja* |  |  |  |
| 2     |  |  |  |  | ja* |
| 3a-c  |  | ja* |  |  |  ja* |
| 4a-c  |  | ja* |  |  |  ja* |
| 5     |  |  |  |  |  |
| 6     |  | ja* |  |  | ja |
| 7     | ja |  |  |  | ja |
| 8     |  | ja* |  |  | ja  |
| 9     |  | ja* |  |  |  |
| 10    |  |  |  |  |  |
| 11    | ja | | | ja* | ja |
| 12    | ja | | ja | ja* | |
| 13a+b | ja | | | | |
| 14    | | | | | |
| 15    | | ja* | ja* | | |
| 16    | | ja* | | | ja |
| 17    | | ja* | | | |
| 18    | | | | | ja* |
| 19    | ja | | | | |
| 20    | ja | | | | |
| 21    | | | | | |
| 22    | | | | | |
| 23    | ja | | | | |
| 24    | ja | | | | |
| 25    | | ja | | | |
| 26    | ja | | | | |
| 27    | ja | | | | |
| 28    | ja | | | | |
| 29    | | | | | |
| 30    | | | | | |

%%%* optional / abhängig von Einstellung

(3) The ajax request for the preview will already throw an exception.
(4) This line is the reason: https://secure.phabricator.com/source/phabricator/browse/master/src/infrastructure/markup/remarkup/PhutilRemarkupEngine.php$226

Phabricator/Arcanist Version
It is reproducible on Secure. So the newest released versions.

Thanks! I filed this upstream as https://secure.phabricator.com/T13530 and believe it is fixed by https://secure.phabricator.com/D21208, which is now available in master and stable.

I think a minimal reproduction case is just:

%%%

(That is, any unterminated “%%%” block.)

This was an existing bug, but made more obvious by increasing language-level error severity in https://secure.phabricator.com/D21044.

Thanks, I have pulled the fix. Everything is working again.