Subject | Problem with resources (DSQL) not being freed |
---|---|
Author | birdpointy |
Post date | 2003-04-01T14:37:02Z |
Hi
Not sure if this is my fault, but I dont think so.
I have an application which runs for weeks without being shut down,
but eventually crashes. It uses a TIB_Cursor to poll a database for
new information with the following piece of code:
WCursor := TIB_Cursor.Create(Self);
try
WCursor.IB_Connection := Conn;
WCursor.SQL.Text := 'SELECT * FROM FAXQ WHERE STATUS=0 FOR
UPDATE';
WCursor.APIFirst; // This line is causing the problem
if WCursor.Eof then begin
Log.Lines.Add('No faxes found ....');
Shape.Brush.Color := COLOR_INACTIVE;
Conn.Disconnect;
Exit;
end else begin
....
// do some other stuff
....
end;
finally
WCursor.Unprepare;
WCursor.Free;
Conn.Disconnect;
end;
When I call APIFirst, resources are being allocated that are not
unallocated - I am using a program called MemProof to check this, and
it reports that the API call (isc_dsql_prepare) is not freeing the
resources as required. Is this a IBO issue or a gds32.dll issue, or
is there something I am not understanding.
I have run the app with the APIFirst commented out and the resources
are not affected at all. Do I need to call WCursor.Prepare explicitly?
Any help would be appreciated.
Best wishes
Gary
Not sure if this is my fault, but I dont think so.
I have an application which runs for weeks without being shut down,
but eventually crashes. It uses a TIB_Cursor to poll a database for
new information with the following piece of code:
WCursor := TIB_Cursor.Create(Self);
try
WCursor.IB_Connection := Conn;
WCursor.SQL.Text := 'SELECT * FROM FAXQ WHERE STATUS=0 FOR
UPDATE';
WCursor.APIFirst; // This line is causing the problem
if WCursor.Eof then begin
Log.Lines.Add('No faxes found ....');
Shape.Brush.Color := COLOR_INACTIVE;
Conn.Disconnect;
Exit;
end else begin
....
// do some other stuff
....
end;
finally
WCursor.Unprepare;
WCursor.Free;
Conn.Disconnect;
end;
When I call APIFirst, resources are being allocated that are not
unallocated - I am using a program called MemProof to check this, and
it reports that the API call (isc_dsql_prepare) is not freeing the
resources as required. Is this a IBO issue or a gds32.dll issue, or
is there something I am not understanding.
I have run the app with the APIFirst commented out and the resources
are not affected at all. Do I need to call WCursor.Prepare explicitly?
Any help would be appreciated.
Best wishes
Gary