Piotr Caban (@piotr) commented about dlls/vccorlib140/vccorlib.c:
{ - FIXME("(%p, %d): stub!\n", obj, try_stringable); - return NULL; + IInspectable *inspectable; + IPropertyValue *propval; + IStringable *stringable; + HSTRING val = NULL; + HRESULT hr = S_OK; + + TRACE("(%p, %d)\n", obj, try_stringable); + + if (!obj) return NULL; + /* If try_stringable is true, native will first query for IStringable, and then IPrintable (which is just an alias + * for IStringable). */ + if (try_stringable && (SUCCEEDED(IUnknown_QueryInterface(obj, &IID_IStringable, (void **)&stringable)) || + SUCCEEDED(IUnknown_QueryInterface(obj, &IID_IPrintable, (void **)&stringable)))) Did you check what happens if QueryInterface succeeds and sets stringable to NULL?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9403#note_121337