Module: wine Branch: master Commit: 2ca39611e1e6261771613f3ee312604ff774c014 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ca39611e1e6261771613f3ee3...
Author: Nikolay Sivov nsivov@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,