file RAS_bugs.txt, RAS c/o J.Hoehe & Partner, Koeln, 28.08.97

Fehler / Problem Liste PTOC 2.0.6 unter Windows 95 mit MS VC 4.0

In 2.0.7 (28.08.97) wurden alle (?) behoben ausser:
    18) sizeof() in PTOC falsch
    2)  PTOC's Include-Proc. unter WIN32 kaputt

1a) Warnings Level 3:
        Die Kompilation erbrachte 1092 (!) Warnings mit Level 3, vorwiegend:
		C4013: <function> undefined...
		C4035: <function> : no return value
		C4101: <var> : unreferenced local variable
    Korr: Der Warning Level wurde auf 2 gesetzt

1b) Warnings Level 1 & 2:
	Es verblieben Warnings:
		C4033: <function> must return a value 
		C4133: '=' : incompatible types...
    Korr: C4033 wurde disabled, C4113 korrigiert

2)  PTOC's Include-Proc. unter WIN32 kaputt
	PTOC's eigenes #include-processing ist praktisch nutzlos: es ignoriert
	"-I <dir>" -options & die "INCLUDE"-env.var. Die VDN-TOOLs benutzen 
	den CPP mit PTOC in einer Pipe, in WIN 95/NT geht's z.Zt. nur ueber einen
	.BAT-script.

3)  Syntax-Meldungen kaputt:
	PTOC pascl/_pascl_i.P ohne Opt. -ypc erbrachte (korrekte) Syntaxfehler 
	mit FALSCHER Source-Zuordnung.
    Ursache: der Parameter seekp in yygetline ist falsch, 
    Korr: unter WIN32 (korr.?) 1 Byte pro Zeile addiert wg. DOS <cr><lf>.    

4)  Absturz in Dump Sym.Tab.:
	PTOC pascl/_pascl_i.P ohne Opt. -ypc mit -XT ( dump Symbol Table ) ergab
	Acc.Viol. in DumpSymbol(...) wg. zerstoertem Stack.
    Ursache: strcpy eines 16-Byte-Strings auf eine 4-Byte Varaible.
    Korr: auf 20 Byte vergrössert.
 
5)  Absturz in Dump Parse Tree:
	PTOC pascl/_pascl_i.P ohne Opt. -ypc mit -XH ( dump HDG Tree ) ergab
	Absturz in ListHdg(NodeIndex)-Aufruf aus ParseProgram().
    Ursache: Lok.Var. NodeIndex nicht init. 
    Korr: ListHdg(HdgHead) statt ListHdg(NodeIndex)

6)  -DDEBUG ohne Effekt:
	Die Kompilation der PTOC-source mit -DDEBUG erbrachte keinen Effekt.
    Ursache: bool fulltrace, errtrace, testtrace nie assigned!
    Korr: f. Test static init in yyrecover.c, wieder geloescht

7)  UseSymbolicConst: #defines fehlen:
	C nach PTOC von common/genc.P mit Opt -Xc (Use Symbolic Const, 
	d.h. besser lesbar!!) ergab Syntaxfehler, da die noetigen #defines 
	nicht (mehr?) generiert werden!
    Korr: s.u. 17)

8)  UseSymbolicConst: Tags der Unions kaputt.
	Nach PTOC von common/genc.P mit Opt -Xc sind die Tags der Unions 
	NICHT MEHR symbolisch: 
	    Union ...
		struct { int STempIndex; } C_21;	statt:
		struct { int STempIndex; } C_BlockDcl;
    Ursache: JH(?) fragen, siehe Comments
    Korr: s.u. 17)

9)  PTOC Fehler ohne -DNO_ENUM:
	Nach erneutem CPP von genc.P OHNE -DNO_ENUM (test wg. Fehler 7 !) 
	meckerte PTOC fehlende Dekl. fuer DefineEnum(...) an!
    Ursache: Code falsch weg-"optimiert"?!
    Korr: wie & wozu? lohnt nicht!

10) Absturz in GetString()
	PTOC von common/genc.P mit Opt -Xc und -XQTH (Dumps, s.o) ergab eine 
	Acc.Viol. im genc-Trace (Opt. -XQ) in GetString(StrNdx,rv)-Call aus 
	DumpDumpString_GenC(_ptoc_LINK, index) wg. kaputtem STab-Entry.
    Ursache: vermutlich s.u.15
    Korr: nach Korr. 17) nicht mehr reproduzierbar.

11) DumpSymbolTable etc. doppelt
        Bei der Uebersetzung von PROGRAMs werden die Symboltable u.ae. doppelt 
        ausgegeben.
    Ursache: Die Routine XformAll(...) wird sowohl syntax-getrieben aus 
        yyactr(__np__) bei der Reduktion des Start-Symbols als auch explizit 
	danach nochmals aus ParseProgram() aufgerufen.
    Korr: Abfrage auf HdgHead <> -1 in XformAll.

12) Unsinnige Syntaxfehler.
	PTOC produziert aus unersichtlichen Gründen total unsinige Syntaxfehler
	ohne Zeilenangabe und/oder mit Nonsens-Text. s.a.3) 
    Ursache: total unklar, nur trail-and-error Modif. in der (korrekten?!) 
	Source führte zum Erfolg.

13) Absturz nach Syntaxfehler
        Acc.Viol. aus C-RTE, bedingt durch Schrott in glob.var. 'Y' nach Syntaxfehler:
        fehlendes term. "'" lies ylex() bis YEOF laufen, dann Absturz.
    Ursache: eigentlich unklar!
    korr: pexit(ERRS) nach der Fehlermeldung eingebaut.

14) Fehler in Pointer-Typecast?
        Bei einer LoadadrOP<typ1> ( DerefOP ( ptr-fkt(x)<typ2> ) ) generiert Ptoc 
        (typ1) ptr-fkt(x). Das erscheint falsch bis sinnlos! 
    Korr: bei -DRAS02 wird der typecast (zunaechst nur!) auskommentiert.

15) Abstruz wg. akt.String-parm zu lang
        Ein Aufruf an die PTOC-interne 
            function EnterConstantString (strn: String20): integer;
        mit einem String > 20 Byte ist möglich führt später zu einem Absturz. 
    Ursache: EnterConstantString() erwartet ein term. Blank. (sic!) Fehlt dies, 
        wird "ewig" gesucht und eine irre Länge in die Stringtable eingetragen.
    Korr: korr. Abbruchkrit.

16) Absturz nach '\' 
        Eine ungültige Stringkonstante der Form '\' (Escape ohne wert) führt zum Absturz 
        von pgenc.exe nach Acc.Viol.
    Ursache: Verhalten wie 13)
    Korr: nach Korr. 13) ok.

17) Absturz bei Ausgabe von CONST & TYPES aus vsp02
        Der Versuch, alle(!) CONST und TYPES aus vsp02.p auszugeben, führte zu einer
        Acc.Viol. 
    Korr: Nach der Korrektur von 3 Fehlern in IsConstDcl(), IsEnumvalueDcl() und
        AccessVariable() scheint das jetzt zu klappen.

18) sizeof() in PTOC falsch
        lt. A.Mosle ist sizeof(<type>) in C NICHT ident. mit PTOC-internen 
        sizeof()-Werten. 
