Hans Leidekker : wbemprox: Add helpers to retrieve the system directory and OS architecture.

Alexandre Julliard julliard at winehq.org
Tue Sep 18 14:04:30 CDT 2012


Module: wine
Branch: master
Commit: 381d30ac17a8cf68099e8fa3e2d0bb7669327d64
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=381d30ac17a8cf68099e8fa3e2d0bb7669327d64

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Sep 18 13:11:59 2012 +0200

wbemprox: Add helpers to retrieve the system directory and OS architecture.

---

 dlls/wbemprox/builtin.c |   42 ++++++++++++++++++++++++------------------
 1 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 54992b3..4b6ff38 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -831,31 +831,37 @@ static void fill_processor( struct table *table )
     table->num_rows = count;
 }
 
-static void fill_os( struct table *table )
+static const WCHAR *get_osarchitecture(void)
 {
-    struct record_operatingsystem *rec;
-    WCHAR path[MAX_PATH];
     SYSTEM_INFO info;
+    GetNativeSystemInfo( &info );
+    if (info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) return os_64bitW;
+    return os_32bitW;
+}
+static WCHAR *get_systemdirectory(void)
+{
     void *redir;
+    WCHAR *ret;
 
-    if (!(table->data = heap_alloc( sizeof(*rec) ))) return;
-
-    rec = (struct record_operatingsystem *)table->data;
-    rec->caption    = os_captionW;
-    rec->csdversion = os_csdversionW;
+    if (!(ret = heap_alloc( MAX_PATH * sizeof(WCHAR) ))) return NULL;
+    Wow64DisableWow64FsRedirection( &redir );
+    GetSystemDirectoryW( ret, MAX_PATH );
+    Wow64RevertWow64FsRedirection( redir );
+    return ret;
+}
 
-    GetNativeSystemInfo( &info );
-    if (info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
-        rec->osarchitecture = os_64bitW;
-    else
-        rec->osarchitecture = os_32bitW;
+static void fill_os( struct table *table )
+{
+    struct record_operatingsystem *rec;
 
-    rec->oslanguage = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
+    if (!(table->data = heap_alloc( sizeof(*rec) ))) return;
 
-    Wow64DisableWow64FsRedirection( &redir );
-    GetSystemDirectoryW( path, MAX_PATH );
-    Wow64RevertWow64FsRedirection( redir );
-    rec->systemdirectory = heap_strdupW( path );
+    rec = (struct record_operatingsystem *)table->data;
+    rec->caption         = os_captionW;
+    rec->csdversion      = os_csdversionW;
+    rec->osarchitecture  = get_osarchitecture();
+    rec->oslanguage      = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
+    rec->systemdirectory = get_systemdirectory();
 
     TRACE("created 1 row\n");
     table->num_rows = 1;




More information about the wine-cvs mailing list