Hi,

Another issue in FPC 2.0.1 on Win2000 that doesn't occur in Delphi. As I mentioned before, I am busy porting our Delphi app. The Delphi app had 1400 unit tests, which I am now busy working through to find out why they are failing under FPC.

In the code below, tiListToStream calls tiGetPropertyNames which internally calls GetPropList (the first one), which then throws an Access Violation and reports a error in GetTypeData. See error at end of email.

I traced into GetPropList to line 663 which assigns the @InsertPropnosort event handler.

begin
  if sorted then
    DoInsertProp:[EMAIL PROTECTED]
  else
    DoInsertProp:[EMAIL PROTECTED];      <<== gives AV here
<...snip...>

Any ideas on this one?

----------------------------------------------

procedure tiListToStream(AStream : TStream ;
                         AList : TtiObjectList) ;
var
  lFields  : TStringList ;
begin
  Assert(AStream<>nil, 'AStream not assigned');
  Assert(AList.TestValid, cErrorTIPerObjAbsTestValid);
  Assert(AList.Count > 0, 'AList.Count = 0');
  lFields := TStringList.Create ;
  try
    tiGetPropertyNames(AList.Items[0], lFields );
<...snip...>


-------------------------------------------------
procedure tiGetPropertyNames( pPersistent : TtiBaseObjectClass ;
                              pSL : TStringList ;
                              pPropFilter : TTypeKinds = ctkSimple ) ;
var
  lCount : integer ;
  lSize  : integer ;
  lList  : PPropList ;
  i : integer ;
  lPropFilter : TTypeKinds ;
begin
  Assert( pSL <> nil, 'pSL not assigned.' ) ;
  lPropFilter := pPropFilter ;

  pSL.Clear ;

  lCount  := GetPropList(pPersistent.ClassInfo, lPropFilter, nil, false);
  lSize   := lCount * SizeOf(Pointer);
  GetMem(lList, lSize);
  try
    GetPropList(pPersistent.ClassInfo, lPropFilter, lList, false);
    for i := 0 to lcount - 1 do
      pSL.Add( lList^[i]^.Name ) ;
  finally
    FreeMem( lList, lSize ) ;
  end ;
end ;
-------------------------------------------------

<Error>
  <Message>TTestTIUtils.tiListToStreamDefault: Access violation</Message>
  <ExceptionClass>EAccessViolation</ExceptionClass>
  <ExceptionMessage>Access violation</ExceptionMessage>
  <SourceUnitName>../objpas/typinfo.pp</SourceUnitName>
  <LineNumber>478</LineNumber>
  <FailedMethodName>GETTYPEDATA</FailedMethodName>
</Error>
---------------------------------------------------

Regards,
  - Graeme -



_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to