diff --git a/server/handle.c b/server/handle.c index 3b0d0335a2..37fba69eac 100644 --- a/server/handle.c +++ b/server/handle.c @@ -592,7 +592,14 @@ obj_handle_t open_object( struct process *process, obj_handle_t parent, unsigned return 0; } - if (parent && !(root = get_handle_obj( process, parent, 0, NULL ))) return 0; + if (parent) + { + if (name->len) + root = get_directory_obj( process, parent ); + else /* opening the object itself can work for non-directories too */ + root = get_handle_obj( process, parent, 0, NULL ); + if (!root) return 0; + } if ((obj = open_named_object( root, ops, name, attributes ))) {