Ein Bug im OBERON-Modul Display ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Oberon Compiler V1.17.1 03-Oct-90 Display.mod Date: 16-Jun-90 Die Prozedur Display.Write hat einen Fehler, der zu wunderschönen GURUs führen kann. Dies zeigt, wie nützlich die Beigabe der Quelltexte zu den Moduln des Compilers ist: kleinere Fehler kann man schnell selbst reparieren. Das Programm "writebug" führt den Fehler vor: Es importiert die Prozedur Write einmal aus dem Original-Modul Display und einmal aus dem korrigierten Modul, das ich für dieses Demo-Programm NDisplay genannt habe. Zuerst wird NDisplay.Write einigemale ausgeführt, dann dasselbe mit dem original Display.Write, und der Amiga stürzt ab! Korrektur: ========= Da das Modul Display nicht PD ist, kann wohl auch die korrigierte Version nicht auf PD veröffentlicht werden. Wer die Vollverion des Compilers gekauft hat, kann den Fehler aber selbst beheben. Die Prozedur Write befindet sich am Ende des Quelltextes. Sie lautet auszugsweise, mit der eingefügten Korrektur: IF len+d.curX>d.txtWidth THEN IF d.curX=d.txtWidth THEN WriteLn(d); (* eingefügt: *) IF len