Access Violation in TEqualityComparer<T>.Default when used with a non-contiguous enum
Summary
If you try to TEqualityComparer.Default it crashes with an AV. SomeEnum must be an enum with assigned, non-contiguous values, like 1 and 4.
System Information
- Operating system: Windows
- Processor architecture: x86-64
- Compiler version: trunk Lazarus 3.99 (rev main-2_3-4494-g946040a582) FPC 3.3.1 x86_64-win64-win32/win64
- Device: Computer
Steps to reproduce
Just try to call a TEqualityComparer.Default where SomeEnum is a simple enum with assigned, non-contiguous values.
Example Project
program project1;
{$mode delphi}
uses Generics.Defaults;
type
SomeEnum = (zero = 0, two = 2);
var
z: IEqualityComparer<SomeEnum>;
begin
z:= TEqualityComparer<SomeEnum>.Default;
WriteLn('Done');
ReadLn;
end.
bug-in-TEqualityComparer.Default.zip
What is the current bug behavior?
Access Violation
What is the expected (correct) behavior?
No error

