Да не, проблема как выяснилось не в этом. Проблема в том, что функция
res := SearchSign(path+'\'+sr.name,False,S,SZ)
при нахождении первого файла не возвращает в S и SZ ничего.
Сама функция находится в отдельном модуле и описана так:
Function SearchSign(FName: string; DoIt: Boolean; var Sinf:String; var SiZ:Cardinal): Integer;
тоесть Sinf и SiZ - возвращаемые параметры..
Вообще мне все это не нравится, какой-то говнокод получается, прям самому тошно на это смотреть

Но баг интересный, подозреваю что какие-то косяки с проклятыми потоками. Как же я их не люблю, кто бы знал.
Буду все это переписывать, возможно не все, а попробую возвращать инфу из функция через глобальные параметры.