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