mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-22 10:09:22 +02:00
* Do not free invalid pointer in RegSetValueExA wrapper.
git-svn-id: trunk@10303 -
This commit is contained in:
parent
d0aa4a7e2f
commit
29c19fa4e3
@ -199,23 +199,26 @@ end;
|
||||
|
||||
function RegSetValueExA(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; lpData:pointer;cbData:DWORD):LONG;
|
||||
var
|
||||
lpwsValueName: PWideChar;
|
||||
lpwsValueName, ws: PWideChar;
|
||||
DataBuf: pointer;
|
||||
sz: DWORD;
|
||||
begin
|
||||
lpwsValueName:=PCharToPWideChar(lpValueName);
|
||||
if dwType in [REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ] then begin
|
||||
DataBuf:=PCharToPWideChar(lpData, cbData, @sz);
|
||||
ws:=PCharToPWideChar(lpData, cbData, @sz);
|
||||
if (cbData > 0) and (PChar(lpData)[cbData - 1] <> #0) then
|
||||
Inc(sz, SizeOf(WideChar));
|
||||
cbData:=sz;
|
||||
DataBuf:=ws;
|
||||
end
|
||||
else
|
||||
else begin
|
||||
DataBuf:=lpData;
|
||||
ws:=nil;
|
||||
end;
|
||||
Result:=RegSetValueExW(hKey, lpwsValueName, Reserved, dwType, DataBuf, cbData);
|
||||
FreeMem(lpwsValueName);
|
||||
if DataBuf <> nil then
|
||||
FreeMem(DataBuf);
|
||||
if ws <> nil then
|
||||
FreeMem(ws);
|
||||
end;
|
||||
|
||||
{$endif read_implementation}
|
||||
|
Loading…
Reference in New Issue
Block a user