From 0313f0651caf9ef35d320c6049d4f32ace711457 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 8 Apr 2010 15:12:07 -0700 Subject: ext: preserve subclasses of Rack::Utils::HeaderHash some people subclass HeaderHash and want them preserved through the middleware stack. --- ext/clogger_ext/clogger.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'ext/clogger_ext/clogger.c') diff --git a/ext/clogger_ext/clogger.c b/ext/clogger_ext/clogger.c index f0087fe..93c609d 100644 --- a/ext/clogger_ext/clogger.c +++ b/ext/clogger_ext/clogger.c @@ -472,7 +472,7 @@ static void append_response(struct clogger *c, VALUE key) { VALUE v; - assert(rb_obj_class(c->headers) == cHeaderHash); + assert(rb_obj_is_kind_of(c->headers, cHeaderHash) && "not HeaderHash"); v = rb_funcall(c->headers, sq_brace_id, 1, key); v = NIL_P(v) ? g_dash : byte_xs(v); @@ -703,7 +703,8 @@ static VALUE ccall(struct clogger *c, VALUE env) c->body = tmp[2]; rv = rb_ary_new4(3, tmp); - if (c->need_resp && cHeaderHash != rb_obj_class(c->headers)) { + if (c->need_resp && + ! rb_obj_is_kind_of(tmp[1], cHeaderHash)) { c->headers = rb_funcall(cHeaderHash, new_id, 1, tmp[1]); rb_ary_store(rv, 1, c->headers); } -- cgit v1.2.3-24-ge0c7