Dear Mr. Mahadane,
First of all, thank you for the proposed fix. The access violation seems to be gone. The proposed solution however creates a severe memory leak for every call of
TAdsDataSet.LocateRecord(..)
Line 11826 creates an instance of TList but never destroys it:
temp_poFields := TList.Create;
I'd strongly suggest destroying this "temp_poFields" instance alongside with the original "poFields" instance in its finally-block.
I have added your proposed change as a diff file since the modifications and the lacking destruction of "temp_poFields" so it's easier to see what I'm talking about.
Best regards and happy new year.