diff --git a/mono/metadata/handle.h b/mono/metadata/handle.h index a83618d6b152403c45a88a2c2f02e039d866af08..f4d9650296db11e5973263317cfe485084ed083f 100644 --- a/mono/metadata/handle.h +++ b/mono/metadata/handle.h @@ -365,7 +365,7 @@ void mono_handle_verify (MonoRawHandle handle); #define MONO_HANDLE_CAST(TYPE, VALUE) (TYPED_HANDLE_NAME(TYPE))( VALUE ) -#define MONO_HANDLE_IS_NULL(HANDLE) (MONO_HANDLE_SUPPRESS (MONO_HANDLE_RAW(HANDLE) == NULL)) +#define MONO_HANDLE_IS_NULL(HANDLE) (mono_handle_is_null (HANDLE)) /* @@ -491,6 +491,13 @@ Init values to it. */ extern const MonoObjectHandle mono_null_value_handle; +static inline gboolean +mono_handle_is_null (MonoRawHandle handle) +{ + // Double NULL check is required for this to work with NULL_HANDLE. + return !(handle && MONO_HANDLE_SUPPRESS (MONO_HANDLE_RAW((MonoObjectHandle)handle))); +} + static inline void mono_handle_assign (MonoObjectHandleOut dest, MonoObjectHandle src) {