1 #ifdef _bugs_h
2 
3 Gefundene Fehler und Besonderheiten bei verschiedenen Compilern
4 
5 
6 BORLANDC
7 ========
8 
9 -  RealZero als Define (aus real.h) fhrt whrend derbersetzung von Vec3.C
10 	zum Absturz des Compilers.
11 
12 => Statt Define muReal-Konstante verwendet werden.
13 
14 
15 -  Es gibt Schwierigkeiten bei der Typdeklaration folgender
16 	(klassenspezifischer) Typen der Klassen Object und DynObj wegen
17 	der gleichen Namen.
18 
19 	typedef void (Object::*ObjFun)();
20 	typedef void (DynObj::*ObjFun)();
21 
22 => Unterscheidung durch eindeutige Namen  DynObj::*ObjFun -> DynObj::*DynObjFun
23 
24 
25 -  Die Kombination friend inline fhrt in vec2.h und vec3.h zu Problemen.
26 
27 => Da Alternativen von gcc angemeckert werden, wird eine Unterscheidung
28 ber Schalter eingebaut.
29 
30 
31 
32 TURBOC
33 ======
34 
35 - findet Fehler in DOSPBALL.H. Im Konstruktor fehlte die Initialisierung der
36   display-Variable. -> eigentlich Fehler von BORLANDC
37 
38 
39 
40 HP-CC
41 =====
42 -  kann Real als Klasse (Schalter REAL_IS_CLASS in global.h) nichtbersetzen,
43 	da bei einigen Operatoren scheinbar Mehrdeutigkeiten auftreten. Die
44    Mehrdeutigkeit entsteht bei Verwendung von Real und Integers in einem
45    Ausdruck, da der Compiler dann nicht mehr zwischen Real/Real- und
46    double/double-Operator entscheiden kann.
47 
48 => alle (absolut alle!) Kombinationen von Real- und int-Typen in Ausdruecken
49    muessen explizit den int in einen Real casten !
50 
51 
52 
53 -  purify meldet beim Matrizentest-Programm folgende Meldung:
54 
55 |  ****  Purify'd check  (pid 29719)  ****
56 |  Purify (umr): uninitialized memory read:
57 |    * This is occurring while in:
58 |  	operator/(const Vector&,const Matrix&) [line 211, matrix.C, pc=0x28f44]
59 |  	main         [line 26, matrix_x.C, pc=0x2d6d8]
60 |  	_start       [libc.sl, pc=0x817ef04c]
61 |  	$START$      [check, pc=0x5740]
62 |    * Reading 4 bytes from 0x7b033630 on stack (2 bytes at 0x7b033632 uninit).
63 |    * This is local variable "x" in function main.
64 |
65 |                           Chunks      Bytes
66 |                Leaked          0          0
67 |    Potentially Leaked          0          0
68 |                In-Use          7       4064
69 |    ----------------------------------------
70 |       Total Allocated          7       4064
71 |
72 
73 => ignorieren
74 
75 
76 
77 GNU-CC
78 ======
79 -  Version 2.5.7 kann in der double-Version von Real den impliziten Cast von
80    Integer-Konstanten nach const Real& nicht korrekt durchf�hren.
81 
82 	der Fehler f�hrt zum Laufzeitabsturz !!!
83 
84 => Alle Integer-Konstanten, die als Real verwendet werden, m�ssen vorsorglich
85 	explizit als double in der Source auftauchen.
86 
87 
88 -  In xmover.C gibt es Schwierigkeiten bei der Macro-Ersetzung von
89 	YADDOP zu + in der Zeile  c YADDOP= dy_c (also: c += dy_c)
90 
91 => c YADDOP dy_c verwenden und direkt += zuordnen
92 
93 
94 -  Version 2.6.0 hat Probleme mit dem Default-Copy-Konstruktor der
95    Carrom-Klasse. Der Fehler tritt bei gleichzeitiger Verwendung eines
96    mehrdimensionalen Arrays und eines einzelnen Objekts (im Beispiel Vec2)
97    auf
98 
99 => Copy-Konstruktor wird explizit als dummy definiert
100 
101 
102 -  Real (*this) wird als konstant angenommen in
103    inline Real Real::operator*( const Real &z ) const
104 		{ return (*this)*=z; }
105 
106 => Konstrukt variiert:
107 
108    inline Real Real::operator*( const Real &z ) const
109 		{ Real erg(*this); erg*=z; return erg; }
110 
111 
112 -  Version 2.4 hat Probleme mit dem protected member id der Klasse Object.
113    Die public abgeleitete Klasse goal kann darauf nicht zugreifen.
114 
115 => id wird zum public member gemacht.
116 
117 
118 -  There is an optimization failure in gcc-2.7.0 which makes it impossible
119    to update the queue on the screen, while it internally works correct.
120    The problem occurs in the function PBallNorm::MoveQueue, where the new
121    position of the queue should be set.
122 
123 => gcc-2.7.0 shouldn't be used with optimize -O2
124 
125 
126 FVWM
127 ====
128 
129 -  There is a struggle for the colormap, when running under fvwm.
130 
131 => The Server has to be grab, when the window manager deinstalles the map.
132 
133 
134 -  FVWM crashes when opening the window for debugging colors (using the
135    option ShowColors)
136 
137 => Before opening the debug-window. The X-Server is synchronized and then
138 	a break for a second seems to help fvwm out. Don't ask me why?
139 
140 
141 allgemein
142 =========
143 -  Vector( int n, double, ... ); funktioniert nicht
144 
145 => ausgetauscht in Vector( int n, double d ), analog fuer Matrizen
146 
147 
148 #endif
149