server: Try4: add case-sensitivity comparison flag to find_object & co

Vitaliy Margolen wine-patch at kievinfo.com
Fri Sep 23 07:49:00 CDT 2005


Use this one instead - it should apply to the corrected previous patch.

This is just a case-sensitivity patch to the server. It depends on previous
patch to pass OBJECT_ATTRIBUTES.Attributes to the server.

I removed case_sensitive flag from name space, since it's no use anymore.

Vitaliy Margolen

changelog:
  server: Add case-sensitivity comparison flag to find_object & co
-------------- next part --------------
diff -up -x '*.o' wine-rtest/server/console.c wine/server/console.c
--- wine-rtest/server/console.c	2005-09-19 08:17:00.000000000 -0600
+++ wine/server/console.c	2005-09-19 14:02:37.000000000 -0600
@@ -227,7 +227,7 @@ static struct object *create_console_inp
     console_input->history_index = 0;
     console_input->history_mode  = 0;
     console_input->edition_mode  = 0;
-    console_input->event         = create_event( NULL, 0, 1, 0 );
+    console_input->event         = create_event( NULL, 0, FALSE, 1, 0 );
 
     if (!console_input->history || !console_input->evt)
     {
diff -up -x '*.o' wine-rtest/server/event.c wine/server/event.c
--- wine-rtest/server/event.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/event.c	2005-09-19 12:56:27.000000000 -0600
@@ -59,11 +59,12 @@ static const struct object_ops event_ops
 
 
 struct event *create_event( const WCHAR *name, size_t len,
+                            int case_sensitive,
                             int manual_reset, int initial_state )
 {
     struct event *event;
 
-    if ((event = create_named_object( sync_namespace, &event_ops, name, len )))
+    if ((event = create_named_object( sync_namespace, &event_ops, name, len, case_sensitive )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -147,6 +148,7 @@ DECL_HANDLER(create_event)
 
     reply->handle = 0;
     if ((event = create_event( get_req_data(), get_req_data_size(),
+                               IS_CASE_SENSITIVE( req->attributes ),
                                req->manual_reset, req->initial_state )))
     {
         reply->handle = alloc_handle( current->process, event, req->access,
@@ -159,6 +161,7 @@ DECL_HANDLER(create_event)
 DECL_HANDLER(open_event)
 {
     reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
+                                 IS_CASE_SENSITIVE( req->attributes ),
                                  &event_ops, req->access, IS_INHERIT( req->attributes ) );
 }
 
diff -up -x '*.o' wine-rtest/server/handle.c wine/server/handle.c
--- wine-rtest/server/handle.c	2005-09-19 08:17:00.000000000 -0600
+++ wine/server/handle.c	2005-09-19 14:03:48.000000000 -0600
@@ -521,10 +521,11 @@ obj_handle_t duplicate_handle( struct pr
 
 /* open a new handle to an existing object */
 obj_handle_t open_object( const struct namespace *namespace, const WCHAR *name, size_t len,
-                          const struct object_ops *ops, unsigned int access, int inherit )
+                          int case_sensitive, const struct object_ops *ops,
+                          unsigned int access, int inherit )
 {
     obj_handle_t handle = 0;
-    struct object *obj = find_object( namespace, name, len );
+    struct object *obj = find_object( namespace, name, len, case_sensitive );
     if (obj)
     {
         if (ops && obj->ops != ops)
diff -up -x '*.o' wine-rtest/server/handle.h wine/server/handle.h
--- wine-rtest/server/handle.h	2005-09-19 08:17:00.000000000 -0600
+++ wine/server/handle.h	2005-09-19 12:51:47.000000000 -0600
@@ -44,7 +44,8 @@ extern int set_handle_unix_fd( struct pr
 extern obj_handle_t duplicate_handle( struct process *src, obj_handle_t src_handle, struct process *dst,
                                   unsigned int access, int inherit, int options );
 extern obj_handle_t open_object( const struct namespace *namespace, const WCHAR *name, size_t len,
-                                 const struct object_ops *ops, unsigned int access, int inherit );
+                                 int case_sensitive, const struct object_ops *ops,
+                                 unsigned int access, int inherit );
 extern obj_handle_t find_inherited_handle( struct process *process, const struct object_ops *ops );
 extern struct handle_table *alloc_handle_table( struct process *process, int count );
 extern struct handle_table *copy_handle_table( struct process *process, struct process *parent );
diff -up -x '*.o' wine-rtest/server/mailslot.c wine/server/mailslot.c
--- wine-rtest/server/mailslot.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/mailslot.c	2005-09-19 15:48:07.000000000 -0600
@@ -212,8 +212,8 @@ static void mailslot_queue_async( struct
     fd_queue_async_timeout( fd, apc, user, iosb, type, count, timeout );
 }
 
-static struct mailslot *create_mailslot( const WCHAR *name, size_t len, int max_msgsize,
-                                         int read_timeout )
+static struct mailslot *create_mailslot( const WCHAR *name, size_t len, int case_sensitive,
+                                         int max_msgsize, int read_timeout )
 {
     struct mailslot *mailslot;
     int fds[2];
@@ -225,7 +225,7 @@ static struct mailslot *create_mailslot(
         return NULL;
     }
 
-    mailslot = create_named_object( sync_namespace, &mailslot_ops, name, len );
+    mailslot = create_named_object( sync_namespace, &mailslot_ops, name, len, case_sensitive );
     if (!mailslot)
         return NULL;
 
@@ -258,11 +258,11 @@ static struct mailslot *create_mailslot(
     return NULL;
 }
 
-static struct mailslot *open_mailslot( const WCHAR *name, size_t len )
+static struct mailslot *open_mailslot( const WCHAR *name, size_t len, int case_sensitive )
 {
     struct object *obj;
 
-    obj = find_object( sync_namespace, name, len );
+    obj = find_object( sync_namespace, name, len, case_sensitive );
     if (obj)
     {
         if (obj->ops == &mailslot_ops)
@@ -352,6 +352,7 @@ DECL_HANDLER(create_mailslot)
 
     reply->handle = 0;
     mailslot = create_mailslot( get_req_data(), get_req_data_size(),
+                                IS_CASE_SENSITIVE( req->attributes ),
                                 req->max_msgsize, req->read_timeout );
     if (mailslot)
     {
@@ -375,7 +376,8 @@ DECL_HANDLER(open_mailslot)
         return;
     }
 
-    mailslot = open_mailslot( get_req_data(), get_req_data_size() );
+    mailslot = open_mailslot( get_req_data(), get_req_data_size(),
+                              IS_CASE_SENSITIVE( req->attributes ) );
     if (mailslot)
     {
         struct mail_writer *writer;
diff -up -x '*.o' wine-rtest/server/main.c wine/server/main.c
--- wine-rtest/server/main.c	2005-09-19 08:17:00.000000000 -0600
+++ wine/server/main.c	2005-09-19 11:59:52.000000000 -0600
@@ -130,7 +130,7 @@ int main( int argc, char *argv[] )
 
     sock_init();
     open_master_socket();
-    sync_namespace = create_namespace( 37, TRUE );
+    sync_namespace = create_namespace( 37 );
     setvbuf( stderr, NULL, _IOLBF, 0 );
 
     if (debug_level) fprintf( stderr, "wineserver: starting (pid=%ld)\n", (long) getpid() );
diff -up -x '*.o' wine-rtest/server/mapping.c wine/server/mapping.c
--- wine-rtest/server/mapping.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/mapping.c	2005-09-19 12:59:06.000000000 -0600
@@ -270,14 +270,14 @@ inline static int get_file_size( struct 
 }
 
 static struct object *create_mapping( file_pos_t size, int protect, obj_handle_t handle,
-                                      const WCHAR *name, size_t len )
+                                      const WCHAR *name, size_t len, int case_sensitive )
 {
     struct mapping *mapping;
     int access = 0;
 
     if (!page_mask) init_page_size();
 
-    if (!(mapping = create_named_object( sync_namespace, &mapping_ops, name, len )))
+    if (!(mapping = create_named_object( sync_namespace, &mapping_ops, name, len, case_sensitive )))
         return NULL;
     if (get_error() == STATUS_OBJECT_NAME_COLLISION)
         return &mapping->obj;  /* Nothing else to do */
@@ -377,7 +377,8 @@ DECL_HANDLER(create_mapping)
 
     reply->handle = 0;
     if ((obj = create_mapping( size, req->protect, req->file_handle,
-                               get_req_data(), get_req_data_size() )))
+                               get_req_data(), get_req_data_size(),
+                               IS_CASE_SENSITIVE( req->attributes ) )))
     {
         reply->handle = alloc_handle( current->process, obj, req->access, IS_INHERIT( req->attributes ) );
         release_object( obj );
@@ -388,6 +389,7 @@ DECL_HANDLER(create_mapping)
 DECL_HANDLER(open_mapping)
 {
     reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
+                                 IS_CASE_SENSITIVE( req->attributes ),
                                  &mapping_ops, req->access, IS_INHERIT( req->attributes ) );
 }
 
diff -up -x '*.o' wine-rtest/server/mutex.c wine/server/mutex.c
--- wine-rtest/server/mutex.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/mutex.c	2005-09-19 12:59:41.000000000 -0600
@@ -61,11 +61,12 @@ static const struct object_ops mutex_ops
 };
 
 
-static struct mutex *create_mutex( const WCHAR *name, size_t len, int owned )
+static struct mutex *create_mutex( const WCHAR *name, size_t len, int case_sensitive,
+                                   int owned )
 {
     struct mutex *mutex;
 
-    if ((mutex = create_named_object( sync_namespace, &mutex_ops, name, len )))
+    if ((mutex = create_named_object( sync_namespace, &mutex_ops, name, len, case_sensitive )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -171,7 +172,9 @@ DECL_HANDLER(create_mutex)
     struct mutex *mutex;
 
     reply->handle = 0;
-    if ((mutex = create_mutex( get_req_data(), get_req_data_size(), req->owned )))
+    if ((mutex = create_mutex( get_req_data(), get_req_data_size(),
+                               IS_CASE_SENSITIVE( req->attributes ),
+                               req->owned )))
     {
         reply->handle = alloc_handle( current->process, mutex, req->access,
                                       IS_INHERIT( req->attributes ) );
@@ -183,6 +186,7 @@ DECL_HANDLER(create_mutex)
 DECL_HANDLER(open_mutex)
 {
     reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
+                                 IS_CASE_SENSITIVE( req->attributes ),
                                  &mutex_ops, req->access, IS_INHERIT( req->attributes ) );
 }
 
diff -up -x '*.o' wine-rtest/server/named_pipe.c wine/server/named_pipe.c
--- wine-rtest/server/named_pipe.c	2005-09-21 14:13:27.000000000 -0600
+++ wine/server/named_pipe.c	2005-09-21 15:21:11.000000000 -0600
@@ -397,7 +397,7 @@ static int pipe_server_flush( struct fd 
 
         /* this kind of sux - 
            there's no unix way to be alerted when a pipe becomes empty */
-        server->event = create_event( NULL, 0, 0, 0 );
+        server->event = create_event( NULL, 0, FALSE, 0, 0 );
         if (!server->event)
             return 0;
         gettimeofday( &tv, NULL );
@@ -440,11 +440,11 @@ static int pipe_client_get_info( struct 
     return flags;
 }
 
-static struct named_pipe *create_named_pipe( const WCHAR *name, size_t len )
+static struct named_pipe *create_named_pipe( const WCHAR *name, size_t len, int case_sensitive )
 {
     struct named_pipe *pipe;
 
-    pipe = create_named_object( sync_namespace, &named_pipe_ops, name, len );
+    pipe = create_named_object( sync_namespace, &named_pipe_ops, name, len, case_sensitive );
     if (pipe)
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
@@ -458,11 +458,11 @@ static struct named_pipe *create_named_p
     return pipe;
 }
 
-static struct named_pipe *open_named_pipe( const WCHAR *name, size_t len )
+static struct named_pipe *open_named_pipe( const WCHAR *name, size_t len, int case_sensitive )
 {
     struct object *obj;
 
-    if ((obj = find_object( sync_namespace, name, len )))
+    if ((obj = find_object( sync_namespace, name, len, case_sensitive )))
     {
         if (obj->ops == &named_pipe_ops) return (struct named_pipe *)obj;
         release_object( obj );
@@ -548,7 +548,8 @@ DECL_HANDLER(create_named_pipe)
     struct pipe_server *server;
 
     reply->handle = 0;
-    pipe = create_named_pipe( get_req_data(), get_req_data_size() );
+    pipe = create_named_pipe( get_req_data(), get_req_data_size(),
+                              IS_CASE_SENSITIVE( req->attributes ) );
     if (!pipe)
         return;
 
@@ -599,7 +600,8 @@ DECL_HANDLER(open_named_pipe)
     struct named_pipe *pipe;
     int fds[2];
 
-    pipe = open_named_pipe( get_req_data(), get_req_data_size() );
+    pipe = open_named_pipe( get_req_data(), get_req_data_size(),
+                            IS_CASE_SENSITIVE( req->attributes ) );
     if (!pipe)
     {
         set_error( STATUS_NO_SUCH_FILE );
@@ -698,7 +700,7 @@ DECL_HANDLER(wait_named_pipe)
     struct named_pipe *pipe;
     struct pipe_server *server;
 
-    if (!(pipe = open_named_pipe( get_req_data(), get_req_data_size() )))
+    if (!(pipe = open_named_pipe( get_req_data(), get_req_data_size(), FALSE )))
     {
         set_error( STATUS_PIPE_NOT_AVAILABLE );
         return;
diff -up -x '*.o' wine-rtest/server/object.c wine/server/object.c
--- wine-rtest/server/object.c	2005-09-21 15:23:49.000000000 -0600
+++ wine/server/object.c	2005-09-19 15:28:12.000000000 -0600
@@ -44,7 +44,6 @@ struct object_name
 struct namespace
 {
     unsigned int        hash_size;       /* size of hash table */
-    int                 case_sensitive;  /* are names case sensitive? */
     struct list         names[1];        /* array of hash entry lists */
 };
 
@@ -92,8 +91,7 @@ static int get_name_hash( const struct n
 {
     WCHAR hash = 0;
     len /= sizeof(WCHAR);
-    if (namespace->case_sensitive) while (len--) hash ^= *name++;
-    else while (len--) hash ^= tolowerW(*name++);
+    while (len--) hash ^=  tolowerW(*name++);
     return hash % namespace->hash_size;
 }
 
@@ -157,14 +155,14 @@ void *alloc_object( const struct object_
 }
 
 void *create_named_object( struct namespace *namespace, const struct object_ops *ops,
-                           const WCHAR *name, size_t len )
+                           const WCHAR *name, size_t len, int case_sensitive )
 {
     struct object *obj;
     struct object_name *name_ptr;
 
     if (!name || !len) return alloc_object( ops );
 
-    if ((obj = find_object( namespace, name, len )))
+    if ((obj = find_object( namespace, name, len, case_sensitive )))
     {
         if (obj->ops != ops)
         {
@@ -225,28 +223,23 @@ void release_object( void *ptr )
 }
 
 /* find an object by its name; the refcount is incremented */
-struct object *find_object( const struct namespace *namespace, const WCHAR *name, size_t len )
+struct object *find_object( const struct namespace *namespace, const WCHAR *name, size_t len, int case_sensitive )
 {
     const struct list *list, *p;
 
     if (!name || !len) return NULL;
 
     list = &namespace->names[ get_name_hash( namespace, name, len ) ];
-    if (namespace->case_sensitive)
+    LIST_FOR_EACH( p, list )
     {
-        LIST_FOR_EACH( p, list )
+        const struct object_name *ptr = LIST_ENTRY( p, const struct object_name, entry );
+        if (ptr->len != len) continue;
+        if (case_sensitive)
         {
-            const struct object_name *ptr = LIST_ENTRY( p, const struct object_name, entry );
-            if (ptr->len != len) continue;
             if (!memcmp( ptr->name, name, len )) return grab_object( ptr->obj );
         }
-    }
-    else
-    {
-        LIST_FOR_EACH( p, list )
+        else
         {
-            const struct object_name *ptr = LIST_ENTRY( p, const struct object_name, entry );
-            if (ptr->len != len) continue;
             if (!strncmpiW( ptr->name, name, len/sizeof(WCHAR) )) return grab_object( ptr->obj );
         }
     }
@@ -254,7 +247,7 @@ struct object *find_object( const struct
 }
 
 /* allocate a namespace */
-struct namespace *create_namespace( unsigned int hash_size, int case_sensitive )
+struct namespace *create_namespace( unsigned int hash_size )
 {
     struct namespace *namespace;
     unsigned int i;
@@ -263,7 +256,6 @@ struct namespace *create_namespace( unsi
     if (namespace)
     {
         namespace->hash_size      = hash_size;
-        namespace->case_sensitive = case_sensitive;
         for (i = 0; i < hash_size; i++) list_init( &namespace->names[i] );
     }
     return namespace;
diff -up -x '*.o' wine-rtest/server/object.h wine/server/object.h
--- wine-rtest/server/object.h	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/object.h	2005-09-19 12:51:01.000000000 -0600
@@ -29,6 +29,7 @@
 #include "wine/server_protocol.h"
 #include "wine/list.h"
 
+#define IS_CASE_SENSITIVE(a) (((a)&OBJ_CASE_INSENSITIVE)==0)
 #define IS_INHERIT(a) ((a)&OBJ_INHERIT)
 
 #define DEBUG_OBJECTS
@@ -96,13 +97,14 @@ extern void *alloc_object( const struct 
 extern const WCHAR *get_object_name( struct object *obj, size_t *len );
 extern void dump_object_name( struct object *obj );
 extern void *create_named_object( struct namespace *namespace, const struct object_ops *ops,
-                                  const WCHAR *name, size_t len );
-extern struct namespace *create_namespace( unsigned int hash_size, int case_sensitive );
+                                  const WCHAR *name, size_t len, int case_sensitive );
+extern struct namespace *create_namespace( unsigned int hash_size );
 /* grab/release_object can take any pointer, but you better make sure */
 /* that the thing pointed to starts with a struct object... */
 extern struct object *grab_object( void *obj );
 extern void release_object( void *obj );
-extern struct object *find_object( const struct namespace *namespace, const WCHAR *name, size_t len );
+extern struct object *find_object( const struct namespace *namespace, const WCHAR *name, size_t len,
+                                   int case_sensitive );
 extern int no_add_queue( struct object *obj, struct wait_queue_entry *entry );
 extern int no_satisfied( struct object *obj, struct thread *thread );
 extern int no_signal( struct object *obj, unsigned int access );
@@ -117,7 +119,7 @@ extern void dump_objects(void);
 
 struct event;
 
-extern struct event *create_event( const WCHAR *name, size_t len,
+extern struct event *create_event( const WCHAR *name, size_t len, int case_sensitive,
                                    int manual_reset, int initial_state );
 extern struct event *get_event_obj( struct process *process, obj_handle_t handle, unsigned int access );
 extern void pulse_event( struct event *event );
diff -up -x '*.o' wine-rtest/server/process.c wine/server/process.c
--- wine-rtest/server/process.c	2005-09-19 08:17:00.000000000 -0600
+++ wine/server/process.c	2005-09-19 14:02:57.000000000 -0600
@@ -993,7 +993,7 @@ DECL_HANDLER(init_process_done)
     generate_startup_debug_events( process, req->entry );
     set_process_startup_state( process, STARTUP_DONE );
 
-    if (req->gui) process->idle_event = create_event( NULL, 0, 1, 0 );
+    if (req->gui) process->idle_event = create_event( NULL, 0, FALSE, 1, 0 );
     if (current->suspend + process->suspend > 0) stop_thread( current );
     if (process->debugger) set_process_debug_flag( process, 1 );
 }
diff -up -x '*.o' wine-rtest/server/semaphore.c wine/server/semaphore.c
--- wine-rtest/server/semaphore.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/semaphore.c	2005-09-19 13:00:00.000000000 -0600
@@ -59,6 +59,7 @@ static const struct object_ops semaphore
 
 
 static struct semaphore *create_semaphore( const WCHAR *name, size_t len,
+                                           int case_sensitive,
                                            unsigned int initial, unsigned int max )
 {
     struct semaphore *sem;
@@ -68,7 +69,7 @@ static struct semaphore *create_semaphor
         set_error( STATUS_INVALID_PARAMETER );
         return NULL;
     }
-    if ((sem = create_named_object( sync_namespace, &semaphore_ops, name, len )))
+    if ((sem = create_named_object( sync_namespace, &semaphore_ops, name, len, case_sensitive )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -147,6 +148,7 @@ DECL_HANDLER(create_semaphore)
 
     reply->handle = 0;
     if ((sem = create_semaphore( get_req_data(), get_req_data_size(),
+                                 IS_CASE_SENSITIVE( req->attributes ),
                                  req->initial, req->max )))
     {
         reply->handle = alloc_handle( current->process, sem, req->access,
@@ -159,8 +161,8 @@ DECL_HANDLER(create_semaphore)
 DECL_HANDLER(open_semaphore)
 {
     reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
-                                 &semaphore_ops, req->access,
-                                 IS_INHERIT( req->attributes ) );
+                                 IS_CASE_SENSITIVE( req->attributes ), &semaphore_ops,
+                                 req->access, IS_INHERIT( req->attributes ) );
 }
 
 /* release a semaphore */
diff -up -x '*.o' wine-rtest/server/timer.c wine/server/timer.c
--- wine-rtest/server/timer.c	2005-09-21 14:09:59.000000000 -0600
+++ wine/server/timer.c	2005-09-19 12:56:58.000000000 -0600
@@ -67,11 +67,12 @@ static const struct object_ops timer_ops
 
 
 /* create a timer object */
-static struct timer *create_timer( const WCHAR *name, size_t len, int manual )
+static struct timer *create_timer( const WCHAR *name, size_t len, int case_sensitive,
+                                   int manual )
 {
     struct timer *timer;
 
-    if ((timer = create_named_object( sync_namespace, &timer_ops, name, len )))
+    if ((timer = create_named_object( sync_namespace, &timer_ops, name, len, case_sensitive )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -205,7 +206,8 @@ DECL_HANDLER(create_timer)
     struct timer *timer;
 
     reply->handle = 0;
-    if ((timer = create_timer( get_req_data(), get_req_data_size(), req->manual )))
+    if ((timer = create_timer( get_req_data(), get_req_data_size(),
+                               IS_CASE_SENSITIVE( req->attributes ), req->manual )))
     {
         reply->handle = alloc_handle( current->process, timer, req->access,
                                       IS_INHERIT( req->attributes ) );
@@ -217,6 +219,7 @@ DECL_HANDLER(create_timer)
 DECL_HANDLER(open_timer)
 {
     reply->handle = open_object( sync_namespace, get_req_data(), get_req_data_size(),
+                                 IS_CASE_SENSITIVE( req->attributes ),
                                  &timer_ops, req->access, IS_INHERIT( req->attributes ) );
 }
 
diff -up -x '*.o' wine-rtest/server/winstation.c wine/server/winstation.c
--- wine-rtest/server/winstation.c	2005-07-11 12:05:50.000000000 -0600
+++ wine/server/winstation.c	2005-09-19 12:58:40.000000000 -0600
@@ -83,7 +83,7 @@ static struct winstation *create_winstat
 {
     struct winstation *winstation;
 
-    if (!winstation_namespace && !(winstation_namespace = create_namespace( 7, FALSE )))
+    if (!winstation_namespace && !(winstation_namespace = create_namespace( 7 )))
         return NULL;
 
     if (memchrW( name, '\\', len / sizeof(WCHAR) ))  /* no backslash allowed in name */
@@ -92,7 +92,7 @@ static struct winstation *create_winstat
         return NULL;
     }
 
-    if ((winstation = create_named_object( winstation_namespace, &winstation_ops, name, len )))
+    if ((winstation = create_named_object( winstation_namespace, &winstation_ops, name, len, FALSE )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -181,7 +181,7 @@ static struct desktop *create_desktop( c
 
     if (!(full_name = build_desktop_name( name, len, winstation, &full_len ))) return NULL;
 
-    if ((desktop = create_named_object( winstation_namespace, &desktop_ops, full_name, full_len )))
+    if ((desktop = create_named_object( winstation_namespace, &desktop_ops, full_name, full_len, FALSE )))
     {
         if (get_error() != STATUS_OBJECT_NAME_COLLISION)
         {
@@ -322,7 +322,7 @@ DECL_HANDLER(open_winstation)
 {
     if (winstation_namespace)
         reply->handle = open_object( winstation_namespace, get_req_data(), get_req_data_size(),
-                                     &winstation_ops, req->access, req->inherit );
+                                     FALSE, &winstation_ops, req->access, req->inherit );
     else
         set_error( STATUS_OBJECT_NAME_NOT_FOUND );
 }
@@ -395,7 +395,7 @@ DECL_HANDLER(open_desktop)
         if ((full_name = build_desktop_name( get_req_data(), get_req_data_size(),
                                              winstation, &full_len )))
         {
-            reply->handle = open_object( winstation_namespace, full_name, full_len,
+            reply->handle = open_object( winstation_namespace, full_name, full_len, FALSE,
                                          &desktop_ops, req->access, req->inherit );
             free( full_name );
         }


More information about the wine-patches mailing list