Jinoh Kang (@iamahuman) commented about server/mapping.c:
if (root) release_object( root ); }
+static struct mapping *open_object_mapping( user_handle_t handle, struct unicode_str *name ) +{ + static const WCHAR object_mappingW[] = {'_','_','w','i','n','e','_','m','a','p','p','i','n','g'}; + struct mapping *mapping; + struct object *object; + + if (name->len != sizeof(object_mappingW) || memcmp( name->str, object_mappingW, name->len )) return NULL; + if (!(object = get_handle_obj( current->process, handle, 0, NULL ))) return NULL; + mapping = object->ops->get_object_mapping( object );
Can `get_object_mapping` ever fail (except `no_object_mapping`)? If we allow it to fail, should we distinguish this case by making `open_object_mapping` return a boolean instead and returning the mapping via some pass-by-ref out pointer? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3103#note_59388