From 29c19fa4e3aa01fa25eff1aa5558b715cd18b3a2 Mon Sep 17 00:00:00 2001 From: yury Date: Mon, 11 Feb 2008 18:43:37 +0000 Subject: [PATCH] * Do not free invalid pointer in RegSetValueExA wrapper. git-svn-id: trunk@10303 - --- rtl/wince/wininc/cemiss.inc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/rtl/wince/wininc/cemiss.inc b/rtl/wince/wininc/cemiss.inc index 4cdd3ef81d..02fe37edf9 100644 --- a/rtl/wince/wininc/cemiss.inc +++ b/rtl/wince/wininc/cemiss.inc @@ -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}