Rémi Bernon (@rbernon) commented about dlls/windows.devices.enumeration/aqs.y:
+static const PROPVARIANT propval_empty = { VT_EMPTY }; + +static int aqs_error( struct aqs_parser *parser, const char *str ) +{ + if (TRACE_ON( aqs)) ERR( "%s\n", str ); + return 0; +} + +#define GET_COMPARE_EXPR( ctx, op, prop_vt, val_vt, out ) do { \ + HRESULT hr; \ + hr = get_compare_expr( ctx, op, (prop_vt)->pwszVal, val_vt, out ); \ + PropVariantClear( prop_vt ); \ + PropVariantClear( val_vt ); \ + if (FAILED( hr )) \ + YYABORT; \ + } while (0) What about sinking both propvariant ownership into the expr and letting it deal with cleanup?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8890#note_115226