TManagedObject with interface field doesn't work on Delphi 2010

Issue #168 resolved
Big Banng created an issue

In delphi 2010 , GetInterfaceEntry in TFieldTable.AddManagedField ( in Spring.pas):

  function GetInterfaceEntry(cls: TClass; intf: PTypeInfo): PInterfaceEntry;
  var
    interfaceTable: PInterfaceTable;
    p: PPPTypeInfo;
    i: Integer;
  begin
    repeat
      interfaceTable := cls.GetInterfaceTable;
      if interfaceTable <> nil then
      begin
        p := @interfaceTable.Entries[interfaceTable.EntryCount];
        for i := 0 to interfaceTable.EntryCount - 1 do
        begin
          Result := @interfaceTable.Entries[i];
          if p^^ = intf then
            Exit;
          Inc(p);
        end;
      end;
      cls := cls.ClassParent;
    until cls = nil;
    Result := nil;
  end;

the p^^ is always nil.

Comments (4)

  1. Log in to comment