-#define Data_Get_Notmuch_Object(obj, type, message, ptr) \
- do { \
- Check_Type ((obj), T_DATA); \
- if (DATA_PTR ((obj)) == NULL) \
- rb_raise (rb_eRuntimeError, (message)); \
- Data_Get_Struct ((obj), type, (ptr)); \
+#define Data_Get_Notmuch_Object(obj, ptr) \
+ do { \
+ (ptr) = rb_data_object_get ((obj)); \
+ if (RB_UNLIKELY (!(ptr))) { \
+ VALUE cname = rb_class_name (CLASS_OF ((obj))); \
+ rb_raise (rb_eRuntimeError, "%"PRIsVALUE" object destroyed", cname); \
+ } \