Icon View Incident Report

Serious Serious
Reported By: Bill Sorenson
Reported On: 5/28/2004
For: Version 4.07 Build 1
# 1736 Parameter Operations Involving BLOBs Causing Invalid Pointer Operation Errors

I'm getting multiple EInvalidPointer errors and access violations, which did not occur with the identical code under 4.05.

One example occurs on line 11178 of dbisamtb:

DeAllocMem(TempBlobBuffers[I]);

I get EInvalidPointer: Invalid pointer operation on a prepared, parameterized INSERT into a table with two Memo fields.

The AVs may be related to this; TDataCursor.GetIsRemote in dbisamen appeared to be one trouble spot.

The invalid pointer errors are replicable; they occur every time at the same places in my application's test cases (which ran without errors under 4.05). The test cases use CREATE TABLE to build a test table, so this is not a pre-4.07 invalid table issue. I have not been able to replicate this in a smaller application at this time.


Comments Comments
This problem was caused by an off-by-one error in processing on an open array parameter. It was using a 1-based loop when it should have been using a 0-based loop. This problem did not surface in Delphi 5 in our testing but was present when compiled under Delphi 7. Apparently Delphi 5's compiler was masking the error by initializing open array parameters differently.


Resolution Resolution
Fixed Problem on 6/1/2004 in version 4.08 build 1
Image