[PATCH 1/3] server: Don't set error in find_object_index if the object is not found.

Jinoh Kang jinoh.kang.kr at gmail.com
Sun May 8 08:48:47 CDT 2022


find_object_index() sets the status code to STATUS_NO_MORE_ENTRIES to
indicate that the given index does not exist in the list of the
directory entries, in addition to returning NULL.

STATUS_NO_MORE_ENTRIES only makes sense in the context of the function's
only caller, req_get_directory_entry(), which is used to implement the
NtQueryDirectoryObject() system call, specifically the single object
case.  Otherwise, the choice of status code is unintuitive.

Remove the set_error() call in find_object_index(), and move the
responsibility of setting the status code to the caller.

Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---

Notes:
    v3 -> v4: new patch

 server/directory.c | 1 +
 server/object.c    | 1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/directory.c b/server/directory.c
index 23d7eb0a2b7..fdcfe9bef21 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -562,6 +562,7 @@ DECL_HANDLER(get_directory_entry)
 
             release_object( obj );
         }
+        else set_error( STATUS_NO_MORE_ENTRIES );
         release_object( dir );
     }
 }
diff --git a/server/object.c b/server/object.c
index 907bc087444..84c8e70e6a2 100644
--- a/server/object.c
+++ b/server/object.c
@@ -485,7 +485,6 @@ struct object *find_object_index( const struct namespace *namespace, unsigned in
             if (!index--) return grab_object( ptr->obj );
         }
     }
-    set_error( STATUS_NO_MORE_ENTRIES );
     return NULL;
 }
 
-- 
2.34.1




More information about the wine-devel mailing list