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) f�hrt w�hrend der �bersetzung von Vec3.C 10 zum Absturz des Compilers. 11 12 => Statt Define mu� Real-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 f�hrt 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) nicht �bersetzen, 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