[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

永井@知能.九工大です.

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21273] Re: Regexp#initializeが $SAFE==4 で落ちる

From: nobu.nakada@...
Date: 2003-08-27 05:37:32 UTC
List: ruby-dev #21273
なかだです。

At Wed, 27 Aug 2003 13:40:02 +0900,
Nobuyoshi-Nakada wrote:
> > |> また、$SAFE=4でabort(3)が呼ばれるのも避けたい気がします。
> > |> いや、後者はbugなんだから直せよって気はしますが。
> > |
> > |そもそもrb_bug()はabort()を呼ぶためのものなので、違いは警告を出
> > |すかどうかだけです。
> > 
> > んじゃ、こっちは採用ということで。

rb_bug()は他のメソッドを呼ぶべきじゃないんじゃないかという気が
して来ました。$stderrを置き換えておいたところで、何か使えるわけ
じゃなし、そもそも非常事態なのでメッセージが消えてしまうこと自
体まずいんじゃないでしょうか。

> [ruby-dev:21264]だと、ついでにwriteの呼び出しを減らすようにして
> るんですが、\nを別にしている積極的な理由ってありましたっけ。

もうひとつ、rb_sys_fail()でerrno==0のときに情報を追加してました。


Index: error.c
===================================================================
RCS file: /cvs/ruby/src/ruby/error.c,v
retrieving revision 1.77
diff -u -2 -p -r1.77 error.c
--- error.c	15 Aug 2003 03:01:52 -0000	1.77
+++ error.c	27 Aug 2003 05:33:01 -0000
@@ -112,8 +112,10 @@ warn_print(fmt, args)
 {
     char buf[BUFSIZ];
+    int len;
 
     err_snprintf(buf, BUFSIZ, fmt, args);
-    rb_write_error(buf);
-    rb_write_error("\n");
+    len = strlen(buf);
+    buf[len++] = '\n';
+    rb_write_error2(buf, len);
 }
 
@@ -181,14 +183,14 @@ rb_bug(fmt, va_alist)
     char buf[BUFSIZ];
     va_list args;
+    FILE *out = stderr;
 
-    snprintf(buf, BUFSIZ, "[BUG] %s", fmt);
-    ruby_in_eval = 0;
-
-    va_init_list(args, fmt);
-    warn_print(buf, args);
-    va_end(args);
-    snprintf(buf, BUFSIZ, "ruby %s (%s) [%s]\n", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PLATFORM);
-    rb_write_error(buf);
-    rb_write_error("\n");
+    if (out || (out = stdout)) {
+	fwrite(buf, 1, err_position(buf, BUFSIZ), out);
+	fputs("[BUG] ", out);
+	va_init_list(args, fmt);
+	vfprintf(out, fmt, args);
+	va_end(args);
+	fprintf(out, "\nruby %s (%s) [%s]\n\n", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PLATFORM);
+    }
     abort();
 }
@@ -759,5 +761,5 @@ rb_sys_fail(mesg)
     errno = 0;
     if (n == 0) {
-	rb_bug("rb_sys_fail() - errno == 0");
+	rb_bug("rb_sys_fail(%s) - errno == 0", mesg ? mesg : "");
     }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread