Nikolay Sivov : scrrun: Store folder path.
Alexandre Julliard
julliard at winehq.org
Thu Jan 2 13:13:48 CST 2014
Module: wine
Branch: master
Commit: 2ca39611e1e6261771613f3ee312604ff774c014
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ca39611e1e6261771613f3ee312604ff774c014
Author: Nikolay Sivov <nsivov at 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,
More information about the wine-cvs
mailing list