Node:Fixed Bugs, Previous:Planned Features, Up:To Do

### Problems that have been solved

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.

Note: New features are not listed here anymore, see News.

- 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)
- 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 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 `goto`s 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/open arrays <8F990E3D9A6FD1118F3B0000F81EA1D84985CE@exchsa2.dsto.defence.gov.au>
- 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: `attribute`s 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)