[Allegro] "new" mit a99 v33.2

Bernhard Eversberg ev at biblio.tu-bs.de
Fr Jun 14 12:29:58 CEST 2013


Am 14.06.2013 11:23, schrieb Thomas Berger:
>
> "new" liefert ploetzlich einen Dialog: Ziemlich aergerlich
> fuer orda, zabom etc, die im Hintergrund staendig neue
> Saetze anlegen...
>
> NeuaufnahmeF9
>    Kopie?
>    (Nein = Neue Eingabe)
>
> Gibt man "Nein", bricht der Flex ab, gibt man etwas
> anderes, macht es keinen Sinn.
>
> Ursache ist
>        else while(fi[0]<1900) { UtFdel(0); *Aerror=0; } // $$2013-04-22
>
> (und es gibt noch eine zweite Stelle mit fi[0]<1900)
>
> Anscheinend ist fi[0] hier initial groesser als 1900.

Zunächst: fi[] sind interne Nummern von Datenfeldern, fa[0]=fr ist die
Basisadresse des Adressenarrays der Hintergrundfelder.
Im Hintergrundspeicher stehen am Anfang Kopien von Datenfeldern,
die haben interne Nummern unterhalb - so jedenfalls irgendwann mal
die Annahme, 1900. Die #u-Felder kriegen größere Nummern.
Daher ist es äußerst wenig wahrscheinlich, daß fi[0]>1900 wäre.
Mehr dazu in allegro.hpp

Der Datenspeicher hat die Basisadresse ga[0]=g. Siehe record.hpp.

Das mag alles höchst sonderbar und kritikwürdig erscheinen, ist aber
dem enormen Alter der Kernprogramme geschuldet, und es sind nicht alle
Entscheidungen und Beweggründe dokumentiert, die zu dieser oder jener
Einstellung oder Setzung geführt haben.
Wir kümmern uns nächste Woche weiter drum.
B.E.




Mehr Informationen über die Mailingliste Allegro