clogger 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/GNUmakefile +4 -3
- data/History.txt +8 -0
- data/ext/clogger_ext/clogger.c +14 -5
- data/lib/clogger.rb +1 -1
- metadata +1 -1
data/GNUmakefile
CHANGED
@@ -44,10 +44,11 @@ release_changes := release_changes-$(VERSION).txt
|
|
44
44
|
$(release_changes): verify
|
45
45
|
git diff --stat $(vPREV) v$(VERSION) > $@+
|
46
46
|
echo >> $@+
|
47
|
-
git log $(vPREV)
|
47
|
+
git log $(vPREV)..v$(VERSION) >> $@+
|
48
48
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
49
49
|
$(release_notes): verify package
|
50
50
|
gem spec pkg/clogger-$(VERSION).gem description | sed -ne '/\w/p' > $@+
|
51
|
+
echo >> $@+
|
51
52
|
git cat-file tag v$(VERSION) | awk 'p>1{print $$0}/^$$/{++p}' >> $@+
|
52
53
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
53
54
|
verify:
|
@@ -65,11 +66,11 @@ package: verify
|
|
65
66
|
|
66
67
|
# not using Hoe's release system since we release 2 gems but only one tgz
|
67
68
|
release: package Manifest.txt $(release_notes) $(release_changes)
|
68
|
-
rubyforge add_release -f -n $(release_notes) -
|
69
|
+
rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
|
69
70
|
clogger clogger $(VERSION) pkg/clogger-$(VERSION).gem
|
70
71
|
rubyforge add_file \
|
71
72
|
clogger clogger $(VERSION) pkg/clogger-$(VERSION).tgz
|
72
|
-
rubyforge add_release -f -n $(release_notes) -
|
73
|
+
rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
|
73
74
|
clogger clogger_ext $(VERSION) pkg/clogger_ext-$(VERSION).gem
|
74
75
|
endif
|
75
76
|
|
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 0.0.3 / 2009-08-29
|
2
|
+
|
3
|
+
The MRI extension clogger_ext gets GC bug fix and
|
4
|
+
cleanups/robustness improvements. It should now be more
|
5
|
+
tolerant of misbehaving applications in that it'll be less
|
6
|
+
likely to segfault. No changes to the (recommended) pure
|
7
|
+
implementation.
|
8
|
+
|
1
9
|
=== 0.0.2 / 2009-08-29
|
2
10
|
|
3
11
|
* 2 bug fixes
|
data/ext/clogger_ext/clogger.c
CHANGED
@@ -188,7 +188,7 @@ struct response_ops { long nr; VALUE ops; };
|
|
188
188
|
static VALUE swap_sent_headers(VALUE kv, VALUE memo)
|
189
189
|
{
|
190
190
|
struct response_ops *tmp = (struct response_ops *)memo;
|
191
|
-
VALUE key = RARRAY_PTR(kv)[0];
|
191
|
+
VALUE key = rb_obj_as_string(RARRAY_PTR(kv)[0]);
|
192
192
|
long i = RARRAY_LEN(tmp->ops);
|
193
193
|
VALUE *ary = RARRAY_PTR(tmp->ops);
|
194
194
|
VALUE value;
|
@@ -248,7 +248,13 @@ static void clogger_mark(void *ptr)
|
|
248
248
|
{
|
249
249
|
struct clogger *c = ptr;
|
250
250
|
|
251
|
-
|
251
|
+
rb_gc_mark(c->app);
|
252
|
+
rb_gc_mark(c->fmt_ops);
|
253
|
+
rb_gc_mark(c->logger);
|
254
|
+
rb_gc_mark(c->log_buf);
|
255
|
+
rb_gc_mark(c->env);
|
256
|
+
rb_gc_mark(c->cookies);
|
257
|
+
rb_gc_mark(c->response);
|
252
258
|
}
|
253
259
|
|
254
260
|
static VALUE clogger_alloc(VALUE klass)
|
@@ -331,10 +337,11 @@ static VALUE clogger_wrap_body(VALUE self)
|
|
331
337
|
return clogger_get(self)->wrap_body == 0 ? Qfalse : Qtrue;
|
332
338
|
}
|
333
339
|
|
334
|
-
static void append_status(struct clogger *c
|
340
|
+
static void append_status(struct clogger *c)
|
335
341
|
{
|
336
342
|
char buf[sizeof("999")];
|
337
343
|
int nr;
|
344
|
+
VALUE status = RARRAY_PTR(c->response)[0];
|
338
345
|
|
339
346
|
if (TYPE(status) != T_FIXNUM) {
|
340
347
|
status = rb_funcall(status, to_i_id, 0);
|
@@ -536,7 +543,7 @@ static void special_var(struct clogger *c, enum clogger_special var)
|
|
536
543
|
append_body_bytes_sent(c);
|
537
544
|
break;
|
538
545
|
case CL_SP_status:
|
539
|
-
append_status(c
|
546
|
+
append_status(c);
|
540
547
|
break;
|
541
548
|
case CL_SP_request:
|
542
549
|
append_request(c);
|
@@ -667,6 +674,7 @@ static VALUE body_iter_i(VALUE str, VALUE memop)
|
|
667
674
|
{
|
668
675
|
off_t *len = (off_t *)memop;
|
669
676
|
|
677
|
+
str = rb_obj_as_string(str);
|
670
678
|
*len += RSTRING_LEN(str);
|
671
679
|
|
672
680
|
return rb_yield(str);
|
@@ -676,7 +684,6 @@ static VALUE wrap_each(struct clogger *c)
|
|
676
684
|
{
|
677
685
|
VALUE body = RARRAY_PTR(c->response)[2];
|
678
686
|
|
679
|
-
rb_need_block();
|
680
687
|
c->body_bytes_sent = 0;
|
681
688
|
rb_iterate(rb_each, body, body_iter_i, (VALUE)&c->body_bytes_sent);
|
682
689
|
|
@@ -695,6 +702,8 @@ static VALUE clogger_each(VALUE self)
|
|
695
702
|
{
|
696
703
|
struct clogger *c = clogger_get(self);
|
697
704
|
|
705
|
+
rb_need_block();
|
706
|
+
|
698
707
|
return rb_ensure(wrap_each, (VALUE)c, cwrite, (VALUE)c);
|
699
708
|
}
|
700
709
|
|
data/lib/clogger.rb
CHANGED