about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--ext/clogger_ext/clogger.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/clogger_ext/clogger.c b/ext/clogger_ext/clogger.c
index 1993ae8..cea4072 100644
--- a/ext/clogger_ext/clogger.c
+++ b/ext/clogger_ext/clogger.c
@@ -229,18 +229,28 @@ static void clogger_mark(void *ptr)
         rb_gc_mark(c->body);
 }
 
+static size_t memsize(const void *ptr)
+{
+        return sizeof(struct clogger);
+}
+
+static const rb_data_type_t clogger_type = {
+        "clogger",
+        { clogger_mark, RUBY_TYPED_DEFAULT_FREE, memsize, /* reserved */ },
+};
+
 static VALUE clogger_alloc(VALUE klass)
 {
         struct clogger *c;
 
-        return Data_Make_Struct(klass, struct clogger, clogger_mark, -1, c);
+        return TypedData_Make_Struct(klass, struct clogger, &clogger_type, c);
 }
 
 static struct clogger *clogger_get(VALUE self)
 {
         struct clogger *c;
 
-        Data_Get_Struct(self, struct clogger, c);
+        TypedData_Get_Struct(self, struct clogger, &clogger_type, c);
         assert(c);
         return c;
 }