This section lists the bugs fixed since the last (non alpha/beta)
GPC release, together with the date (YYYYMMDD) on which they were
fixed, so you can check if some problem has already been solved in a
recent release or developer version. For new features, see
News.
20050325: check initializers of unused types (fjf898*.pas)
20050312: check that actual discriminants match in parameters and assignments, and in strict EP mode, check that actual discriminants of parameters within one identifier list match (berend4.pas, fjf104[45]*.pas, typeof[2-4].pas)
20050311: allow importing the same value as a result of distinct expressions under the same name for EP modules for ordinal, pointer, string and set constants (fjf1040*.pas, stef1.pas)
20050307: allow attributes for procedural types (chief56.pas)
20050307: problem with string operations and goto (contour0.pas, contourbug.pas, martin1.pas, berend3.pas)
20050307: Result is not completely Delphi compatible (fjf1022*.pas)
20050307: problem if a Write or WriteLn argument calls a routine which writes to the same file (fjf1036.pas)
20050302: Update as well as writing after reading or checking EOF can get the file position wrong in some cases (arp2*.pas, fjf159.pas, fjf160*.pas)
20050217: declaring a procedure in the implementation with the same name as an imported procedure doesn't work (chief18.pas), detect name collisions between imported EP modules (mod9.pas)
20050214: warn if an lhs cast decreases alignment (avo9.pas)
20050214: don't require result variables in forward declarations except in strict ISO mode (marku10*.pas)
20050213: writing to a file buffer at EOF doesn't work (eof1.pas)
20050211: don't allow f^ for unopened files f (pcerror[ij].pas)
20050210: evalute initializers exactly as often as specified (fjf1019.pas)
20050205: initialized types in record and object fields and in schemata (inirec[24].pas, fjf1016*.pas)
20050130: in standard Pascal modes, EOF is false on an empty file (tom7.pas)
20050127: wrong arithmetical overflow with set of byte (igor1.pas)
20050119: types and initializers containing variable expressions, including schemata with non-constant discriminants and global variables of dynamic size (couper[45].pas, fjf186.pas, fjf548.pas, fjf612a.pas, fjf997*.pas, fjf1003*.pas, john1a.pas)
20050117: pow, Trim, Card, set operations (-, *, ><) and comparisons as well as string comparisons and array slices with constant arguments cannot be used in constants (fjf998*.pas, fjf1000*.pas, fjf1009*.pas)
20050117: ParamStr evaluates its argument twice (fjf963b.pas)
20050106: user-defined operators must not be applied to implicit operations (fjf991.pas and many other cases)
20041203: accessing components of a constant (EP) constructor (indexed by a constant for arrays) must yield a constant again (dave3*.pas)
20041202: GPC crashes when using two variables with identically-named fields in a single with statement (withbug.pas)
20041125: GPC doesn't accept case statements without case-list-elements (fjf982*.pas)
20041125: gcc-3.x: options are wrongly reordered (so, e.g., --gnu-pascal -Wno-underscore doesn't work as expected) (avo7.pas)
20041124: applying not to a function result in parentheses doesn't work (avo6.pas)
20041123: packed array indices containing mod don't work (avo4.pas)
20041120: GPC sometimes prints ??? instead of the actual file name in messages
20041028: function results (of record type) must not be allowed as with elements (only a warning in --delphi and --mac-pascal modes for compatibility); fields of non-lvalue with elements must not be lvalues either (fjf493*.pas)
20041022: value parameters of type String (undiscriminated) must take the capacity of the actual parameter, according to EP (waldek11*.pas)
20041021: initialized types in arrays (fjf233.pas, fjf974*.pas)
20041020: initializers are ignored in New and Initialize (fjf967[j-l].pas)
20041020: the address of global routines is not allowed in initializers (avo2*.pas)
20041015: Index and Pos cannot be used in constant expressions (fjf970*.pas)
20041012: initializers of variant records don't work (fjf259.pas), (peter6.pas) <C1256791.0021F002.00@synln01.synstar.de>
20041012: initializers of packed arrays don't work (emil5.pas)
20041007: the __FILE__ and __BASE_FILE__ macros should return full paths
20041006: Sqr sometimes evaluates its argument twice (fjf963a.pas)
20041004: memory leak in routines with a local variable of file type that are left via Exit or Return (fjf962.pas)
20040916: using a Boolean function as a condition in a repeat loop doesn't work correctly (artur1*.pas)
20040913: overstrict type-checking in comparisons involving procedural types (fjf960*.pas)
20040908: Read, Write etc. evaluate its arguments in the wrong order (az43*.pas)
20040908: Read etc. evaluate references to string parameters twice (fjf958.pas)
20040907: on targets with 16 bit Integer type, the MicroSecond field of TimeStamp causes a compilation error
20040907: character arrays indexed by non-integer ordinal types treated as strings cause internal compiler errors (fjf957*.pas)
20040906: -W[no-]cast-align does not work (fjf956*.pas)
20040903: in FormatTime%Z and %z unless provided by system library ignore DST
20040710: powerpc: --strength-reduce doesn't work with for loops (was kludged before, fixed in gcc-3.3.3)
20040710: AIX: ReturnAddress doesn't work after use of dynmamic variables (backend bug, fixed in gcc-3.3.3)
20040622: functions returning sets are called twice if range-checking is on (inga1*.pas)
20040512: pow and ** are really EP conformant now (in particular x pow y and x ** y are an error if x = 0 and y <= 0) (emil27*.pas)
20040511: bug with absolute variables in strange situations (waldek8.pas)
20040511: protected var parameters must only accept references (unlike const parameters) (gale5*.pas)
20040507: pack must not pack the component type of arrays (fjf940[b-e].pas)
20040507: in some circumstances packed fields are allowed as var parameters (fjf940a.pas)
20040427: parameters of procedural types don't support Standard Pascal procedural parameters, conformant/open arrays and type of inquiries (fjf939*.pas)
20040422: bugs with nonlocal gotos out of routines declaring file variables (nonloc*.pas) (fix involved a change in the internal representation of file variables)
20040331: 'foo'#42 is rejected in --borland-pascal (chief53.pas)
20040330: records/objects with many fields are handled slowly
20040328: --implementation-only doesn't work correctly (bo4-19.pas)
20040325: messages referring to object methods point to the end of the object type rather than the method declaration
20040325: bug when slice-accessing a function result of type Pointer type-casted to PString (bo4-18.pas)
20040210: incorrect errors with packed arrays and records (fb[12].pas, gale[34].pas)
20040204: GPC crashes on else after a missing semicolon in some circumstances (fjf926.pas)
20031007: spurious errors about result types in forward declared functions in --extended-pascal etc. (dave2.pas)
20031004: do not allow disposing of nil pointers in standard Pascal modes (fjf917*.pas)
20031001: arithmetic expressions don't work as lower array/subrange bounds (fjf204.pas, fjf248.pas, fjf293.pas, fjf336.pas, fjf346a.pas, fjf622.pas)
20030925: initializers for types containing nested schemata don't work (fjf914*.pas)
20030830: open internal files with O_EXCL on Rewrite (as a protection against symlink attacks)
20030819: GPC accepts, but ignores, options with invalid suffixes (e.g. --delphi-pascal)
20030729: pow and ** are EP conformant now (in particular x pow y = (1 div x) pow (y) if y is negative and x <> 0) (fjf908.pas)
20030714: --enable-keyword/--disable-keyword on the command-line makes GPC crash (david5.pas)
20030704: wrong type-error when applying Inc to a type-casted pointer (peter3.pas)
20030702: with range checking enabled, check dynamic subrange/array size (fjf222*.pas, fjf813*.pas, fjf900*.pas)
20030701: GPC allows modification of conformant array bounds, result of High/Low etc. (fjf897*.pas)
20030626: don't allow linker names starting with a digit (fjf894.pas)
20030625: SubStr with constant arguments doesn't work in constants (gale1.pas)
20030617: handle BitSizeOf correctly for packed array fields, don't allow SizeOf on them (fjf891*.pas)
20030612: System: BPReal must be a packed record <3EE8A26D.C919BE7D@flexim.de>
20030610: schema types with initializers (drf1.pas, fjf886*.pas)
20030610: Return doesn't work for sets (fjf885.pas)
20030609: bug with arrays as fields of packed records (waldek6.pas)
20030607: don't allow duplicate imports in a module interface and implementation (nick1b.pas)
20030604: compensate for parser read-ahead in the lexer, so compiler directives don't become effective too early and error messages refer more closely to the correct source position
20030603: bug when dividing two integers with / (fjf481.pas)
20030509: don't allow absolute in type definitions
20030502: subranges with variable limits (couper[23].pas)
20030502: Sparc with gcc-2.95.x: goto jumping out of two procedure nesting levels doesn't work (GCC bug; fixed in gcc-3) <200111170922.KAA09125@goedel.fjf.gnu.de> (fjf558[op].pas) (fixed with gcc-3 or when using --longjmp-all-nonlocal-labels)
20030502: the parser does not always recover well after a parse error <199911040915.KAA11168@humulus.daimi.au.dk> (fixed the case given in this report; if there are other cases, please report)
20030501: detect conflicts between object fields and local variables in methods
20030430: packed array/record fields don't work in Read etc. (tom5.pas)
20030430: file parameters must not automatically be bindable in --extended-pascal (fjf193[c-e].pas)
20030423: give an error rather than a warning when casting between types of different size in {$X-}
20030423: simplify code generated to compute size of dynamical variables if no bitfields are involved (ok with gcc-3)
20030422: initialized object variables don't work (fjf445*.pas)
20030422: declarations of a module interface are not visible in the implementation (kevin13.pas, mod12.pas) <Pine.BSI.3.96.971110210330.7570A-100000@malasada.lava.net>
20030422: detect invalid array slice access with constant indices at compile-time (peter2*.pas)
20030421: automatically close dynamically allocated files on Dispose and files declared in a statement block at the end of the statement block <6r9ir5$7v5$1@nntpd.lkg.dec.com> (fjf219[a-d].pas, fjf502.pas)
20030421: initialize local static variables in the main constructor, not in each routine call (fjf458*.pas)
20030421: check parameter and result variable names in repeated forward etc. declarations <20010321204051.A611@plato> (fjf284.pas, markus8.pas, fjf850*.pas)
20030417: modifying for-loop counters within the loop or in a subroutine is not allowed <200005240807.EAA05355@mail.bcpl.net>, <Pine.LNX.4.44.0210281004000.31943-100000@duch.mimuw.edu.pl> (az47.pas, fjf837*.pas)
20030417: possible stack overflow when using string concatenation in a loop (fjf419*.pas, fjf345e.pas, fjf460b.pas) – breaks berend3.pas (less important because strange test case, and just another instance of existing contourbug.pas)
20030416: some functions in boolean shortcuts are always called (fjf226*.pas)
20030414: label declarations must not be allowed in unit/module interfaces and module implementations (but in unit implementations, BP compatible, though we don't allow nonlocal gotos into the constructor) (fjf835*.pas)
20030321: variables declared in interfaces of modules are not initialized (capacity of strings etc.) (daj3.pas, sven14c.pas, nick1.pas)
20030321: subranges whose size is exactly one or two bytes are not packed in packed arrays (daj14a.pas)
20030321: prior parameter's size depends on `Foo' with const string parameters in module interfaces (fjf667.pas)
20030313: operators don't always work across units (fjf803.pas)
20030312: overloading <=, >=, <> and some certain words doesn't work (fjf789.pas, fjf794*.pas, fjf800.pas, fjf802.pas, fjf804.pas)
20030311: when passing a schema variable as an untyped argument, the whole schema, including the discriminants is passed (fjf798.pas)
20030302: discriminant identifiers as variant record selectors
20030227: GPC crashes when taking the address of local variables in an initializer (nicola4*.pas)
20030225: the warnings about uninitialized/unused variables don't work for strings, objects, etc. (fjf779*.pas)
20030221: gcc-2.95.x: configure --silent doesn't work (passes wrong options to sub-configures, so the subsequent make fails) (GCC bug; fixed in 3.x)
20030215: forward referencing pointers generate debug info that appears as generic pointers
20030202: count of parameters in error messages should not include Self in methods or internal parameters for conformant or open arrays
20030129: check for unresolved forward, interface and method declarations (az32.pas, fjf758*.pas)
20030129: several standard conformance bugs (az{1..24,26..42,44..46}*.pas, emil23*.pas)
20030126: some bugs with complicated schema usage (emil22*.pas, fjf750*.pas)
20030122: subtraction of unsigned types with a negative result doesn't work (ml4.pas)
20021229: declaring huge enum types and exporting subranges of them is very slow (quadratic time behaviour); some bugs regarding exporting of subranges (fjf736*.pas)
20021213: Linux: crtscreen should react to SIGWINCH
20021120: Card doesn't work with set constructors; Include and Exclude should not accept set constructors (eike3*.pas)
20021105: type initializers are not type-checked until a variable of the type is declared (fjf704.pas); with gcc-2.x: bug when variables of a type with initializer are declared locally in more than one routine (couper13.pas)
20021105: packed object should not be allowed (fjf703.pas)
20021101: bug when replacing a non-virtual method by a virtual one in a descendant object type (fjf702.pas)
20021027: classic Pascal does not know the empty string <Pine.LNX.4.44.0210181332470.29475-100000@duch.mimuw.edu.pl> (fjf693*.pas)
20021027: relational and exponentiation operators have no associativity <Pine.LNX.4.44.0210210807410.18095-100000@duch.mimuw.edu.pl> (fjf692.pas, fjf566[k-m].pas)
20021002: gpc -Bdir requires a trailing dir separator
20021001: constructors are accepted as the argument to Dispose (fjf674.pas)
20021001: align file fields in packed records on machines with strict alignment requirements (chief38*.pas)
20021001: bug on machines with strict alignment requirements <199906021618.MAA06228@sten27.software.mitel.com> (richard1.pas)
20020930: duplicate variable declarations are allowed
20020929: attributes of variables are ignored (fjf673.pas)
20020929: volatile for external variables without asmname is ignored (fjf672.pas)
20020926: numbers with base specifiers are allowed as labels (fjf417*.pas)
20020923: System: MemAvail/MaxAvail can go into an endless loop
20020920: the number of times the preprocessor is invoked by the automake mechanism might grow exponentially with the number of units involved <02091610572303.14626@dutw54.wbmt.tudelft.nl>
20020918: importing StandardOutput etc. in the interface of a module doesn't work (sietse2*.pas)
20020904: comparisons between signed and unsigned integers sometimes give wrong results (eike2.pas, fjf664.pas, martin5.pas)
20020903: IOSelect fails with file handles >= 8 on some systems (e.g., Solaris) (fjf663.pas)
20020831: GPC creates wrong debug info for many built-in types <200208280012.g7S0CWj07637@mail.bcpl.net>
20020827: comparisons of packed subrange variables don't work right (martin4[ab].pas)
20020824: operators defined in units don't always work (maur11.pas)
20020824: object methods that contain an ISO style procedural parameter forget the implicit with Self do (fjf662a.pas)
20020615: if Pass[i] in 'A' .. 'Z' makes GPC crash (miklos6.pas)
20020603: compiling a program (not a unit or module) with --interface-only or --syntax-only segfaults (waldek1.pas)
20020603: --nested-comments fails without -Wall (waldek2.pas)
20020514: powerpc: --strength-reduce doesn't work with for loops [kludged now]
20020514: guarantee complete evaluation in {$B+} mode (fjf552*.pas)
20020514: spurious warning with for loops using a ByteCard counter (toby1.pas)