Du musst erstmal XMLStringData zurück geben bevor du .Free ausführst.
Jedoch hab ich oft Probleme wenn ich ein Objekt oder in diesem Fall eine Stringlist Free'e.
Im Prinzip brauchst du es nicht mal Free'en, denn es ist eine Lokale Variable, diese wird vom Delphi Speichermanager
freigegeben.
Also:
Delphi-Quellcode:
...
Result:= XMLStringData;
end;