<div dir="ltr"><div>Hi everyone!</div><div><br></div><div>I am currently working through an older codebase in FPC (2.6.4, exclusively on Linux and x86_64 target) that I will have to maintain. My task is to fix some bugs and make things more efficient if possible. Now, one program uses TGZFileStream to read from a lot (say, 1000 or more files) one by one. In the code, there is</div><div><br></div><div>[1] FStream := TGZFileStream.Create(FFileNames[i], gzOpenRead);<br></div><div><br></div><div>to open the files. When the stream ends and the next file is going to be opened, there is</div><div><br></div><div>[2] FreeAndNil(FStream);</div><div><br></div><div>followed by another [1] with incremented i. The same FStream variable is reused. But that should be no problem after FreeAndNil(), right? My problem is that during the whole run time, file handles are never freed. At least</div><div><br></div><div>ls -l /proc/PID/fd</div><div><br></div><div>shows all files still open, and so does lsof.</div><div><br></div><div>Is that a bug in TGZFileStream or am I missing something? I think I can provide a minimal working example, but maybe the question can be answered without...</div><div><br></div><div>Thanks a lot, and best regards!</div><div>Dimitri</div>







</div>