Rémi Bernon (@rbernon) commented about dlls/cfgmgr32/main.c:
+ { + if ((iface_entry = calloc( 1, sizeof( *iface_entry ) ))) + { + if (!(iface_entry->path = wcsdup( obj.pszObjectId ))) + { + free( iface_entry ); + hr = E_OUTOFMEMORY; + } + else if (rb_put( &ctx->known_ifaces, iface_entry->path, &iface_entry->entry )) + { + free( (void *)obj.pszObjectId ); + free( iface_entry ); + } + } + else + hr = E_OUTOFMEMORY; Freeing `obj.pszObjectId` looks wrong? I think this could be made simpler:
```suggestion:-14+0 if (!(iface_entry = calloc( 1, sizeof( *iface_entry ) )) || !(iface_entry->path = wcsdup( obj.pszObjectId )) || rb_put( &ctx->known_ifaces, iface_entry->path, &iface_entry->entry )) { if (iface_entry) free( iface_entry->path ); free( iface_entry ); hr = E_OUTOFMEMORY; } ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8564#note_111441