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