[#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:21194] [PATCH] BeOS

From: nobu.nakada@...
Date: 2003-08-13 20:44:20 UTC
List: ruby-dev #21194
なかだです。

http://www.geocities.co.jp/SiliconValley-PaloAlto/1409/ruby/beos.html
の能条さんのBeOS用パッチを見て気づいたんですが、
2003-08-04-p2.diffは他の環境でも必要になる可能性があります。1.8
ではAC_SYS_LARGEFILEを使っているのでst_inoがlongより大きい場合
がありますし、常にerrnoがFixnumに収まるという保証はありません。

2003-08-04-p1.diffのsocket関連はよく分からないのでパス。
2003-08-04-p3.diffは、binのものは一応instruby.rbで置換してるの
で、それ以外のサンプルとかテストはとりあえず我慢してもらうとい
うことで。


Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.186
diff -u -2 -p -r1.186 configure.in
--- configure.in	7 Aug 2003 05:43:58 -0000	1.186
+++ configure.in	13 Aug 2003 19:03:57 -0000
@@ -625,4 +625,16 @@ if test "$rb_cv_need_io_flush_before_see
 fi
 
+AC_CACHE_CHECK([whether st_ino is huge], rb_cv_huge_st_ino,
+[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([
+#include <sys/stat.h>
+struct stat test_stat;
+], [sizeof(test_stat.st_ino)>sizeof(long)])],
+rb_cv_huge_st_ino=yes,
+rb_cv_huge_st_ino=no)
+])
+if test $rb_cv_huge_st_ino = yes; then
+  AC_DEFINE(HUGE_ST_INO)
+fi
+
 case "$target_cpu" in
 m68*|i?86|sparc) rb_cv_stack_grow_dir=-1;;
Index: error.c
===================================================================
RCS file: /cvs/ruby/src/ruby/error.c,v
retrieving revision 1.75
diff -u -2 -p -r1.75 error.c
--- error.c	30 Jul 2003 06:10:08 -0000	1.75
+++ error.c	13 Aug 2003 09:37:27 -0000
@@ -607,5 +607,5 @@ syserr_eqq(self, exc)
     VALUE self, exc;
 {
-    VALUE num;
+    VALUE num, e;
 
     if (!rb_obj_is_kind_of(exc, rb_eSystemCallError)) return Qfalse;
@@ -621,5 +621,6 @@ syserr_eqq(self, exc)
 	num = rb_const_get(klass, rb_intern("Errno"));
     }
-    if (rb_const_get(self, rb_intern("Errno")) == num)
+    e = rb_const_get(self, rb_intern("Errno"));
+    if (FIXNUM_P(num) ? num == e : rb_equal(num, e))
 	return Qtrue;
     return Qfalse;
@@ -671,5 +672,11 @@ Init_Exception()
     rb_eNoMemError = rb_define_class("NoMemoryError", rb_eException);
 
-    init_syserr();
+    syserr_tbl = st_init_numtable();
+    rb_eSystemCallError = rb_define_class("SystemCallError", rb_eStandardError);
+    rb_define_method(rb_eSystemCallError, "initialize", syserr_initialize, -1);
+    rb_define_method(rb_eSystemCallError, "errno", syserr_errno, 0);
+    rb_define_singleton_method(rb_eSystemCallError, "===", syserr_eqq, 1);
+
+    rb_mErrno = rb_define_module("Errno");
 
     rb_define_global_function("warn", rb_warn_m, 1);
@@ -805,14 +812,7 @@ rb_check_frozen(obj)
 }
 
-static void
-init_syserr()
+void
+Init_syserr()
 {
-    syserr_tbl = st_init_numtable();
-    rb_eSystemCallError = rb_define_class("SystemCallError", rb_eStandardError);
-    rb_define_method(rb_eSystemCallError, "initialize", syserr_initialize, -1);
-    rb_define_method(rb_eSystemCallError, "errno", syserr_errno, 0);
-    rb_define_singleton_method(rb_eSystemCallError, "===", syserr_eqq, 1);
-
-    rb_mErrno = rb_define_module("Errno");
 #ifdef EPERM
     set_syserr(EPERM, "EPERM");
Index: file.c
===================================================================
RCS file: /cvs/ruby/src/ruby/file.c,v
retrieving revision 1.155
diff -u -2 -p -r1.155 file.c
--- file.c	30 Jul 2003 00:32:03 -0000	1.155
+++ file.c	13 Aug 2003 19:05:25 -0000
@@ -162,5 +162,9 @@ rb_stat_ino(self)
     VALUE self;
 {
+#ifdef HUGE_ST_INO
+    return ULL2NUM(get_stat(self)->st_ino);
+#else
     return ULONG2NUM(get_stat(self)->st_ino);
+#endif
 }
 
@@ -172,5 +176,5 @@ rb_stat_mode(self)
     return UINT2NUM((unsigned short)(get_stat(self)->st_mode));
 #else
-     return UINT2NUM(get_stat(self)->st_mode);
+    return UINT2NUM(get_stat(self)->st_mode);
 #endif
 }
Index: inits.c
===================================================================
RCS file: /cvs/ruby/src/ruby/inits.c,v
retrieving revision 1.7
diff -u -2 -p -r1.7 inits.c
--- inits.c	16 Jan 2003 07:34:01 -0000	1.7
+++ inits.c	13 Aug 2003 19:07:05 -0000
@@ -19,4 +19,5 @@ void Init_Dir _((void));
 void Init_Enumerable _((void));
 void Init_Exception _((void));
+void Init_syserr _((void));
 void Init_eval _((void));
 void Init_load _((void));
@@ -60,4 +61,5 @@ rb_call_inits()
     Init_Numeric();
     Init_Bignum();
+    Init_syserr();
     Init_Array();
     Init_Hash();


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

In This Thread

Prev Next