https://bugs.winehq.org/show_bug.cgi?id=53807
--- Comment #1 from Jason Millard jsm174@gmail.com --- I spent a while debugging this.
In interp_redim, before returning, it should look to see if the lookup_identifier ref is VT_BYREF. If so, get the V_VARIANTREF.
Current:
VariantClear(ref.u.v); V_VT(ref.u.v) = VT_ARRAY|VT_VARIANT; V_ARRAY(ref.u.v) = array;
return S_OK;
Fix:
VARIANT *v = ref.u.v;
if(V_VT(v) == (VT_VARIANT|VT_BYREF)) { v = V_VARIANTREF(v); }
VariantClear(v); V_VT(v) = VT_ARRAY|VT_VARIANT; V_ARRAY(v) = array;
return S_OK;