Nikolay Sivov : scrrun: Store folder path.
Module: wine Branch: master Commit: 2ca39611e1e6261771613f3ee312604ff774c014 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ca39611e1e6261771613f3ee3... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Thu Jan 2 21:27:16 2014 +0400 scrrun: Store folder path. --- dlls/scrrun/filesystem.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 0236492..2753ecc 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -39,6 +39,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(scrrun); struct folder { IFolder IFolder_iface; LONG ref; + BSTR path; }; struct file { @@ -371,7 +372,10 @@ static ULONG WINAPI folder_Release(IFolder *iface) TRACE("(%p)->(%d)\n", This, ref); if (!ref) + { + SysFreeString(This->path); heap_free(This); + } return ref; } @@ -614,15 +618,23 @@ static const IFolderVtbl foldervtbl = { folder_CreateTextFile }; -static HRESULT create_folder(IFolder **folder) +static HRESULT create_folder(BSTR path, IFolder **folder) { struct folder *This; + *folder = NULL; + This = heap_alloc(sizeof(struct folder)); if (!This) return E_OUTOFMEMORY; This->IFolder_iface.lpVtbl = &foldervtbl; This->ref = 1; + This->path = SysAllocString(path); + if (!This->path) + { + heap_free(This); + return E_OUTOFMEMORY; + } *folder = &This->IFolder_iface; @@ -1790,7 +1802,7 @@ static HRESULT WINAPI filesys_CreateFolder(IFileSystem3 *iface, BSTR path, return HRESULT_FROM_WIN32(GetLastError()); } - return create_folder(folder); + return create_folder(path, folder); } static HRESULT WINAPI filesys_CreateTextFile(IFileSystem3 *iface, BSTR FileName,
participants (1)
-
Alexandre Julliard