From 73768d54d3af644dab3dc3a5fd12aa75961f3c28 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 15 Dec 2011 08:57:01 +0000 Subject: * io.c (argf_type): make typed data. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'io.c') diff --git a/io.c b/io.c index 3e184f2995..fc4fba7aa2 100644 --- a/io.c +++ b/io.c @@ -7133,6 +7133,21 @@ argf_free(void *ptr) xfree(p); } +static size_t +argf_memsize(const void *ptr) +{ + const struct argf *p = ptr; + size_t size = sizeof(*p); + if (!ptr) return 0; + if (p->inplace) size += strlen(p->inplace) + 1; + return size; +} + +static const rb_data_type_t argf_type = { + "ARGF", + {argf_mark, argf_free, argf_memsize}, +}; + static inline void argf_init(struct argf *p, VALUE v) { @@ -7146,7 +7161,7 @@ static VALUE argf_alloc(VALUE klass) { struct argf *p; - VALUE argf = Data_Make_Struct(klass, struct argf, argf_mark, argf_free, p); + VALUE argf = TypedData_Make_Struct(klass, struct argf, &argf_type, p); argf_init(p, Qnil); return argf; -- cgit v1.2.3