Detlef Riekenberg : winspool: Support monitors without a name.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jan 12 05:39:00 CST 2007


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

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Thu Jan 11 13:05:16 2007 +0100

winspool: Support monitors without a name.

---

 dlls/winspool.drv/info.c |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 41b706c..9e165db 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -985,11 +985,13 @@ static monitor_t * monitor_load(LPCWSTR
     /* Is the Monitor already loaded? */
     EnterCriticalSection(&monitor_handles_cs);
 
-    LIST_FOR_EACH_ENTRY(cursor, &monitor_handles, monitor_t, entry)
-    {
-        if (lstrcmpW(name, cursor->name) == 0) {
-            pm = cursor;
-            break;
+    if (name) {
+        LIST_FOR_EACH_ENTRY(cursor, &monitor_handles, monitor_t, entry)
+        {
+            if (cursor->name && (lstrcmpW(name, cursor->name) == 0)) {
+                pm = cursor;
+                break;
+            }
         }
     }
 
@@ -1005,8 +1007,10 @@ static monitor_t * monitor_load(LPCWSTR
         LPMONITOREX pmonitorEx;
         DWORD   len;
 
-        len = lstrlenW(MonitorsW) + lstrlenW(name) + 2; 
-        regroot = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+        if (name) {
+            len = lstrlenW(MonitorsW) + lstrlenW(name) + 2;
+            regroot = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+        }
 
         if (regroot) {
             lstrcpyW(regroot, MonitorsW);
@@ -1029,7 +1033,7 @@ static monitor_t * monitor_load(LPCWSTR
         pm->name = strdupW(name);
         pm->dllname = strdupW(driver);
 
-        if (!regroot || !pm->name || !pm->dllname) {
+        if ((name && (!regroot || !pm->name)) || !pm->dllname) {
             monitor_unload(pm);
             SetLastError(ERROR_NOT_ENOUGH_MEMORY);
             pm = NULL;
@@ -1069,10 +1073,10 @@ static monitor_t * monitor_load(LPCWSTR
             }
         }
 
-        if (pInitializePrintMonitor != NULL) {
+        if (pInitializePrintMonitor && regroot) {
             pmonitorEx = pInitializePrintMonitor(regroot);
-            TRACE(  "%p: LPMONITOREX from %s,InitializePrintMonitor(%s)\n", 
-                    pmonitorEx, debugstr_w(driver), debugstr_w(regroot)); 
+            TRACE(  "%p: LPMONITOREX from %s,InitializePrintMonitor(%s)\n",
+                    pmonitorEx, debugstr_w(driver), debugstr_w(regroot));
 
             if (pmonitorEx) {
                 pm->dwMonitorSize = pmonitorEx->dwMonitorSize;
@@ -1085,7 +1089,7 @@ static monitor_t * monitor_load(LPCWSTR
 
         }
 
-        if (!pm->monitor) {
+        if (!pm->monitor && regroot) {
             if (pInitializePrintMonitor2 != NULL) {
                 FIXME("%s,InitializePrintMonitor2 not implemented\n", debugstr_w(driver));
             }




More information about the wine-cvs mailing list