Skip to content

Commit 66ea71a

Browse files
committed
Remain c-style casts clean
1 parent 46a73a4 commit 66ea71a

5 files changed

Lines changed: 10 additions & 10 deletions

File tree

strings/base_array.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ WINRT_EXPORT namespace winrt
446446

447447
if constexpr (std::is_base_of_v<Windows::Foundation::IUnknown, T>)
448448
{
449-
return reinterpret_cast<void**>(data);
449+
return impl::abi_cast(*data);
450450
}
451451
else
452452
{
@@ -564,21 +564,21 @@ WINRT_EXPORT namespace winrt
564564
inline hstring get_class_name(Windows::Foundation::IInspectable const& object)
565565
{
566566
void* value{};
567-
check_hresult((*(impl::inspectable_abi**)&object)->GetRuntimeClassName(&value));
567+
check_hresult(static_cast<impl::inspectable_abi*>(*impl::abi_cast(object))->GetRuntimeClassName(&value));
568568
return { value, take_ownership_from_abi };
569569
}
570570

571571
inline com_array<guid> get_interfaces(Windows::Foundation::IInspectable const& object)
572572
{
573573
com_array<guid> value;
574-
check_hresult((*(impl::inspectable_abi**)&object)->GetIids(impl::put_size_abi(value), put_abi(value)));
574+
check_hresult(static_cast<impl::inspectable_abi*>(*impl::abi_cast(object))->GetIids(impl::put_size_abi(value), put_abi(value)));
575575
return value;
576576
}
577577

578578
inline Windows::Foundation::TrustLevel get_trust_level(Windows::Foundation::IInspectable const& object)
579579
{
580580
Windows::Foundation::TrustLevel value{};
581-
check_hresult((*(impl::inspectable_abi**)&object)->GetTrustLevel(&value));
581+
check_hresult(static_cast<impl::inspectable_abi*>(*impl::abi_cast(object))->GetTrustLevel(&value));
582582
return value;
583583
}
584584
}

strings/base_coroutine_foundation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ WINRT_EXPORT namespace winrt
860860

861861
void operator()(T const& sender, Windows::Foundation::AsyncStatus operation_status) noexcept
862862
{
863-
auto sender_abi = *(impl::unknown_abi**)&sender;
863+
auto sender_abi = static_cast<impl::unknown_abi*>(*impl::abi_cast(sender));
864864

865865
if (nullptr == _InterlockedCompareExchangePointer(impl::abi_cast(result), sender_abi, nullptr))
866866
{

strings/base_macros.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
#endif
1515

16-
#define WINRT_IMPL_SHIM(...) (*(abi_t<__VA_ARGS__>**)&static_cast<__VA_ARGS__ const&>(static_cast<D const&>(*this)))
16+
#define WINRT_IMPL_SHIM(...) (*impl::abi_t_abi_cast(static_cast<__VA_ARGS__ const&>(static_cast<D const&>(*this))))
1717

1818
#ifdef _MSC_VER
1919
// Note: this is a workaround for a false-positive warning produced by the Visual C++ 15.9 compiler.

strings/base_string_input.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ WINRT_EXPORT namespace winrt::param
6161

6262
inline void* get_abi(hstring const& object) noexcept
6363
{
64-
return *(void**)(&object);
64+
return *impl::abi_cast(object);
6565
}
6666
}
6767

strings/base_windows.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ WINRT_EXPORT namespace winrt::impl
471471
winrt::hresult winrt_cast_result_code;
472472
auto const winrt_casted_result = try_as_with_reason<Base, Derive const*>(d, winrt_cast_result_code);
473473
check_hresult(winrt_cast_result_code);
474-
auto const winrt_abi_type = *(abi_t<Base>**)&winrt_casted_result;
474+
auto const winrt_abi_type = *abi_t_abi_cast(static_cast<Base const&>(winrt_casted_result));
475475
(winrt_abi_type->*mptr)(std::forward<Args>(args)...);
476476
}
477477
else
@@ -489,7 +489,7 @@ WINRT_EXPORT namespace winrt::impl
489489
winrt::hresult winrt_cast_result_code;
490490
auto const winrt_casted_result = try_as_with_reason<Base, Derive const*>(d, winrt_cast_result_code);
491491
check_hresult(winrt_cast_result_code);
492-
auto const winrt_abi_type = *(abi_t<Base>**)&winrt_casted_result;
492+
auto const winrt_abi_type = *abi_t_abi_cast(static_cast<Base const&>(winrt_casted_result));
493493
WINRT_VERIFY_(0, (winrt_abi_type->*mptr)(std::forward<Args>(args)...));
494494
}
495495
else
@@ -507,7 +507,7 @@ WINRT_EXPORT namespace winrt::impl
507507
winrt::hresult winrt_cast_result_code;
508508
auto const winrt_casted_result = try_as_with_reason<Base, Derive const*>(d, winrt_cast_result_code);
509509
check_hresult(winrt_cast_result_code);
510-
auto const winrt_abi_type = *(abi_t<Base>**)&winrt_casted_result;
510+
auto const winrt_abi_type = *abi_t_abi_cast(static_cast<Base const&>(winrt_casted_result));
511511
check_hresult((winrt_abi_type->*mptr)(std::forward<Args>(args)...));
512512
}
513513
else

0 commit comments

Comments
 (0)