Use code() instead of to_abi() on hresult_error structs as the latter has additional side effects. Cast all values to int32_t to ensure the hresult int32_t() operator is called so we pass the actual value and not the full struct (detected by PVS Studio).