Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Parsen von EnvironmentPath

  Alt 14. Aug 2018, 16:50
Mag sein, daß es hier nicht relevant ist, weil der Rückgabewert gleich weiterverarbeitet wird, aber zeigt der Result von ExpandEnvironment nicht auf eventuell ungültigen Stackspeicher? lpDest liegt doch als lokale Variable auf dem Stack und der wird beim Verlassen der Methode freigegeben. (Mal abgesehen davon, daß der Methodenaufruf mal eben so 64k vom Stack abzwackt.)
Delphi-Quellcode:
function TShortCut.ExpandEnvironment(EnvironmentPath: PWideChar): PWideChar;
var
  lpDest: array [0 .. 32768] of WideChar;
begin

  result := '';
  FillChar(lpDest, SizeOf(lpDest), 0);
  if ExpandEnvironmentStringsW(PWideChar(EnvironmentPath), lpDest, 32767) <> 0 then
    result := lpDest;
end;
Hmmm nun wie geht's besser ?
Mal davon abgesehen das mein Array schon immens definiert ist.
Könnte das Array dynamisch machen so wie von @Schokohase vorgeschlagen.

gruss
  Mit Zitat antworten Zitat