11.3 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. For new features, see
News.
- 20050325: check initializers of unused types (fjf898*.pas)
- 20050325: check identifier scopes stricter (az25.pas, fjf1059*.pas)
- 20050321: in --borland-pascal give only a warning, not an error, for duplicate case elements (drf6*.pas)
- 20050320: multi-dimensional packed arrays are not correctly packed (fjf149*.pas)
- 20050316: check arithmetical overflow in constants somewhat better (fjf206*.pas)
- 20050316: check duplicate external declarations stricter (fjf948.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)
- 20050312: check pointer to schema types stricter (fjf130.pas, fjf614.pas, schema3a.pas affected)
- 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: check goto targets more strictly <261020020000077022%gpaeper@empirenet.com>, <Pine.LNX.4.44.0210281004000.31943-100000@duch.mimuw.edu.pl> (az48.pas, fjf701*.pas, fjf1038*.pas, gale6.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)