Das Problem waren ganz leere ExtendedEventDescriptor. In dem Fall wurde fromCode nicht gesetzt.
Mit beiliegender Version stürzt es jetzt (zumindest hier nicht mehr ab. Allerdings würde ich gerne die mit TODO gekennzeichnete Änderung machen, um Code-Duplikation zu vermeiden. Das hätte aber eine inkompatible Änderung des Return-Wertes von convertCharacterTable() zur Folge. VDR selber benutzt diese Funktion außerhalb libsi nicht, aber ich weiß nicht, ob nicht vielleicht ein Plugin das tut (wobei ich mir nicht vorstellen kann, wozu).
Gibt es Argumente, die dagegen sprechen?
<edit>
Wobei mir gerade einfällt: wenn convertCharacterTable() den String auf jeden Fall kopiert und die resultierende Länge zurückgibt, dann verhält sich der 'int' Result-Wert quasi genauso wie der bisherige 'bool'. Es würde praktisch immer 'true' zurückgegeben, lediglich im Falle eines leeren Ergebnisses wäre es 'false', und ein Aufrufer, der vom alten 'bool' ausgeht würde sich in beiden Fällen richtig verhalten. An den etwaigen Aufrufstellen müsste also nichtmal was geändert werden.
</edit>