From cb302d2475edd2d49d8e4de7ebfac050f5e89afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=9A=93?= Date: Tue, 18 Mar 2025 18:41:28 -0400 Subject: [PATCH] Fix implementation of `OBJ_INIT_COPY` for Ruby < 1.9 --- binding/binding-util.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/binding/binding-util.h b/binding/binding-util.h index 1cb6bc2f..1a543934 100644 --- a/binding/binding-util.h +++ b/binding/binding-util.h @@ -166,7 +166,7 @@ DEF_TYPE_CUSTOMNAME_AND_FREE(Klass, Name, freeInstance) BUILTIN_TYPE(obj) == (type))) #endif -#define OBJ_INIT_COPY(a, b) rb_obj_init_copy(a, b) +#define OBJ_INIT_COPY(a, b) (a != b && (rb_obj_init_copy(a, b), 1)) #define DEF_ALLOCFUNC_CUSTOMFREE(type, free) \ static VALUE type##Allocate(VALUE klass) { \ @@ -505,7 +505,7 @@ RB_METHOD_GUARD(Typ##Load) { return objectLoad(argc, argv, self); } RB_METH RB_METHOD_GUARD(Klass##InitializeCopy) { \ VALUE origObj; \ rb_get_args(argc, argv, "o", &origObj RB_ARG_END); \ -if (!OBJ_INIT_COPY(self, origObj)) /* When would this fail??*/ \ +if (!OBJ_INIT_COPY(self, origObj)) \ return self; \ Klass *orig = getPrivateData(origObj); \ Klass *k = 0; \