Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
076676d4
Commit
076676d4
authored
Mar 27, 2010
by
Nikolay Sivov
Committed by
Alexandre Julliard
Mar 29, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shlwapi: Fix some memory, handle and reference count leaks in RegisterDefaultAcceptHeaders.
parent
5ca6d9b5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
27 deletions
+36
-27
ordinal.c
dlls/shlwapi/ordinal.c
+36
-27
No files found.
dlls/shlwapi/ordinal.c
View file @
076676d4
...
...
@@ -309,24 +309,22 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
BSTR
property
;
IEnumFORMATETC
*
pIEnumFormatEtc
=
NULL
;
VARIANTARG
var
;
HRESULT
h
Ret
;
IWebBrowserApp
*
pBrowser
=
NULL
;
HRESULT
h
r
;
IWebBrowserApp
*
pBrowser
;
TRACE
(
"(%p, %p)
\n
"
,
lpBC
,
lpUnknown
);
/* Get An IWebBrowserApp interface from lpUnknown */
hRet
=
IUnknown_QueryService
(
lpUnknown
,
&
IID_IWebBrowserApp
,
&
IID_IWebBrowserApp
,
(
PVOID
)
&
pBrowser
);
if
(
FAILED
(
hRet
)
||
!
pBrowser
)
return
E_NOINTERFACE
;
hr
=
IUnknown_QueryService
(
lpUnknown
,
&
IID_IWebBrowserApp
,
&
IID_IWebBrowserApp
,
(
void
**
)
&
pBrowser
);
if
(
FAILED
(
hr
))
return
hr
;
V_VT
(
&
var
)
=
VT_EMPTY
;
/* The property we get is the browsers clipboard enumerator */
property
=
SysAllocString
(
szProperty
);
h
Ret
=
IWebBrowserApp_GetProperty
(
pBrowser
,
property
,
&
var
);
h
r
=
IWebBrowserApp_GetProperty
(
pBrowser
,
property
,
&
var
);
SysFreeString
(
property
);
if
(
FAILED
(
hRet
))
return
hRet
;
if
(
FAILED
(
hr
))
goto
exit
;
if
(
V_VT
(
&
var
)
==
VT_EMPTY
)
{
...
...
@@ -340,7 +338,10 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
if
(
!
RegOpenKeyA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Microsoft
\\
Windows
\\
Current"
"Version
\\
Internet Settings
\\
Accepted Documents"
,
&
hDocs
))
return
E_FAIL
;
{
hr
=
E_FAIL
;
goto
exit
;
}
/* Get count of values in key */
while
(
!
dwRet
)
...
...
@@ -355,7 +356,11 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
/* Note: dwCount = number of items + 1; The extra item is the end node */
format
=
formatList
=
HeapAlloc
(
GetProcessHeap
(),
0
,
dwCount
*
sizeof
(
FORMATETC
));
if
(
!
formatList
)
return
E_OUTOFMEMORY
;
{
RegCloseKey
(
hDocs
);
hr
=
E_OUTOFMEMORY
;
goto
exit
;
}
if
(
dwNumValues
>
1
)
{
...
...
@@ -372,7 +377,12 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
dwRet
=
RegEnumValueA
(
hDocs
,
dwCount
,
szKeyBuff
,
&
dwKeySize
,
0
,
&
dwType
,
(
PBYTE
)
szValueBuff
,
&
dwValueSize
);
if
(
!
dwRet
)
return
E_FAIL
;
{
HeapFree
(
GetProcessHeap
(),
0
,
formatList
);
RegCloseKey
(
hDocs
);
hr
=
E_FAIL
;
goto
exit
;
}
format
->
cfFormat
=
RegisterClipboardFormatA
(
szValueBuff
);
format
->
ptd
=
NULL
;
...
...
@@ -385,6 +395,8 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
}
}
RegCloseKey
(
hDocs
);
/* Terminate the (maybe empty) list, last entry has a cfFormat of 0 */
format
->
cfFormat
=
0
;
format
->
ptd
=
NULL
;
...
...
@@ -393,22 +405,21 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
format
->
tymed
=
-
1
;
/* Create a clipboard enumerator */
hRet
=
CreateFormatEnumerator
(
dwNumValues
,
formatList
,
&
pIEnumFormatEtc
);
if
(
FAILED
(
hRet
)
||
!
pIEnumFormatEtc
)
return
hRet
;
hr
=
CreateFormatEnumerator
(
dwNumValues
,
formatList
,
&
pIEnumFormatEtc
);
HeapFree
(
GetProcessHeap
(),
0
,
formatList
);
if
(
FAILED
(
hr
))
goto
exit
;
/* Set our enumerator as the browsers property */
V_VT
(
&
var
)
=
VT_UNKNOWN
;
V_UNKNOWN
(
&
var
)
=
(
IUnknown
*
)
pIEnumFormatEtc
;
property
=
SysAllocString
(
szProperty
);
h
Ret
=
IWebBrowserApp_PutProperty
(
pBrowser
,
property
,
var
);
h
r
=
IWebBrowserApp_PutProperty
(
pBrowser
,
property
,
var
);
SysFreeString
(
property
);
if
(
FAILED
(
h
Ret
))
if
(
FAILED
(
h
r
))
{
IEnumFORMATETC_Release
(
pIEnumFormatEtc
);
goto
RegisterDefaultAcceptHeaders_E
xit
;
goto
e
xit
;
}
}
...
...
@@ -422,28 +433,26 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
/* Get an IEnumFormatEtc interface from the variants value */
pIEnumFormatEtc
=
NULL
;
hRet
=
IUnknown_QueryInterface
(
pIUnknown
,
&
IID_IEnumFORMATETC
,
(
PVOID
)
&
pIEnumFormatEtc
);
if
(
hRet
==
S_OK
&&
pIEnumFormatEtc
)
hr
=
IUnknown_QueryInterface
(
pIUnknown
,
&
IID_IEnumFORMATETC
,
(
void
**
)
&
pIEnumFormatEtc
);
if
(
hr
==
S_OK
&&
pIEnumFormatEtc
)
{
/* Clone and register the enumerator */
h
Ret
=
IEnumFORMATETC_Clone
(
pIEnumFormatEtc
,
&
pClone
);
if
(
h
Ret
==
S_OK
&&
pClone
)
h
r
=
IEnumFORMATETC_Clone
(
pIEnumFormatEtc
,
&
pClone
);
if
(
h
r
==
S_OK
&&
pClone
)
{
RegisterFormatEnumerator
(
lpBC
,
pClone
,
0
);
IEnumFORMATETC_Release
(
pClone
);
}
/* Release the IEnumFormatEtc interface */
IEnumFORMATETC_Release
(
pIUnknown
);
}
IUnknown_Release
(
V_UNKNOWN
(
&
var
));
}
RegisterDefaultAcceptHeaders_E
xit:
e
xit:
IWebBrowserApp_Release
(
pBrowser
);
return
h
Ret
;
return
h
r
;
}
/*************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment