Erstmal das "var" beim Prozedurkopf für errlist rausnehmen. Das könnte das Problem schon beheben.
Dann hast du aber 100%ig in Zeile 2 ein Speicherleck.
Nein, wenn der Zeiger ungültig ist, dann bleibt er das auch, egal ob mit oder ohne Var, da sich innerhalb dieser Funktion rein garnichts ändert.
Und was jaenicke meint:
* entweder jemand in der gleichen Klasse kümmert sich um die Freigabe, oder garnichts erstellen
* oder wenn errlist Assigned ist, dann die Fehler loggen, bzw. ansonsten nur der Boolean-Result