[#31692] cannot run test-all — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
9 messages
2007/09/01
[#31697] Re: [ruby-list:43970] 次の1.8.6 — Tadayoshi Funaba <tadf@...>
> * [ruby-dev:31379]がペンディング
10 messages
2007/09/01
[#31699] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31700] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> > WIN32OLE も Time も担当でないし、この報告が何をいいたいのかもよくわか
[#31703] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31706] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> 今後サポートを続けるべきかはご判断にお任せします。OLEで使われてるん
[#31709] [BUG] non-initialized struct — Tanaka Akira <akr@...>
以下のようにすると [BUG] が出ます。
6 messages
2007/09/02
[#31715] string literal encoding — Nobuyoshi Nakada <nobu@...>
なかだです。
12 messages
2007/09/02
[#31716] Re: string literal encoding
— Yukihiro Matsumoto <matz@...>
2007/09/02
まつもと ゆきひろです
[#31729] packed st_table — Nobuyoshi Nakada <nobu@...>
なかだです。
8 messages
2007/09/04
[#31734] [m17n] String#chop & String#succ — Nobuyoshi Nakada <nobu@...>
なかだです。
2 messages
2007/09/05
[#31744] [m17n] String#encode — Nobuyoshi Nakada <nobu@...>
なかだです。
7 messages
2007/09/06
[#31768] shellescape — "Akinori MUSHA" <knu@...>
shellwords.rb に shellescape() 等を追加しようと思います。
5 messages
2007/09/10
[#31774] RSTRING(value)->ptr == NULL ? — Tietew <tietew+ruby-dev@...>
Tietew です。
7 messages
2007/09/11
[#31778] Re: RSTRING(value)->ptr == NULL ?
— Yukihiro Matsumoto <matz@...>
2007/09/12
まつもと ゆきひろです
[#31781] `scan': character encodings differ (ArgumentError) — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/15
[#31787] 文字列のinspect — eklerni <eklerni@...>
eklerniといいます。
5 messages
2007/09/15
[#31798] generator from Enumerable#map — "Yusuke ENDOH" <mame@...>
遠藤と申します。
7 messages
2007/09/19
[#31810] rb_obj_is_kind_of — Tanaka Akira <akr@...>
rb_obj_is_kind_of の TYPE(cl) ですが、[ruby-dev:31805] の例
5 messages
2007/09/21
[#31815] 文字列の式展開 — eklerni <eklerni@...>
eklerniといいます。
6 messages
2007/09/22
[#31835] Kernel#` is blocked with Ruby/GLib2 on Intel Mac — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/24
[#31842] 拡張ライブラリ内での SIGVTALRM — とみたまさひろ <tommy@...>
とみたです。
10 messages
2007/09/24
[#31848] huge `if' dumps core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
5 messages
2007/09/24
[#31850] meta programming might dump core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
2 messages
2007/09/24
[#31853] optimize T_OBJECT space — Tanaka Akira <akr@...>
T_OBJECT なインスタンスで、インスタンス変数の名前をクラス側
7 messages
2007/09/25
[#31880] Re: optimize T_OBJECT space
— Tanaka Akira <akr@...>
2007/09/28
In article <87r6kne799.fsf@fsij.org>,
[ruby-dev:31776] Re: 1.9 on OpenBSD
From:
Nobuyoshi Nakada <nobu@...>
Date:
2007-09-12 02:18:22 UTC
List:
ruby-dev #31776
なかだです。
At Wed, 12 Sep 2007 07:10:43 +0900,
SASADA Koichi wrote in [ruby-dev:31775]:
> OpenBSD 上で 1.9 をコンパイルしたら,こんな警告が出ました.どうし
> たもんでしょう.
OpenBSDが偏執的というだけのような。
> gcc -g -O2 -L. -Wl,-E main.o libruby-static.a -lpthread -lm -o
> miniruby
> libruby-static.a(io.o)(.text+0x3e12): In function `rb_io_s_sysopen':
> ../trunk/io.c:3459: warning: strcpy() is almost always misused,
> please use strlcpy()
ここでは必要な長さを割り当ててからコピーしているので、strcpyでも
問題はないはずです。むしろ問題はその前のallocaにあって、容易に
stack overflowを起こせます。
$ ruby19 -e 'IO.sysopen("x"*10_000_000)'
セグメンテーション違反です (core dumped)
> libruby-static.a(marshal.o)(.text+0x694): In function `w_float':
> ../trunk/marshal.c:329: warning: sprintf() is often misused, please
> use snprintf()
こちらは内部で上限の決まっているものなので、とんでもなくdoubleの
桁数の大きい(doubleが300bit以上あるような)環境でない限り問題はな
いはずです。
> libruby-static.a(parse.o)(.text+0xcff8): In function `rb_id2str':
> ../trunk/parse.y:8563: warning: strcat() is almost always misused,
> please use strlcat()
これもrb_io_s_sysopenと同様でしょう。
ちなみに、rb_str_cat()などの引数にあるchar*のエンコーディングは
どうなるんでしょうか。ASCII?
Index: io.c
===================================================================
--- io.c (revision 13429)
+++ io.c (working copy)
@@ -3456,6 +3456,6 @@ rb_io_s_sysopen(int argc, VALUE *argv)
else fmode = NUM2INT(perm);
- path = ALLOCA_N(char, strlen(RSTRING_PTR(fname))+1);
- strcpy(path, RSTRING_PTR(fname));
+ RB_GC_GUARD(fname) = rb_str_new4(fname);
+ path = RSTRING_PTR(fname);
fd = rb_sysopen(path, flags, fmode);
return INT2NUM(fd);
Index: marshal.c
===================================================================
--- marshal.c (revision 13429)
+++ marshal.c (working copy)
@@ -310,5 +310,5 @@ static void
w_float(double d, struct dump_arg *arg)
{
- char buf[100];
+ char buf[FLOAT_DIG + (DECIMAL_MANT + 7) / 8 + 10];
if (isinf(d)) {
@@ -327,5 +327,5 @@ w_float(double d, struct dump_arg *arg)
/* xxx: should not use system's sprintf(3) */
- sprintf(buf, "%.*g", FLOAT_DIG, d);
+ snprintf(buf, sizeof(buf), "%.*g", FLOAT_DIG, d);
len = strlen(buf);
w_bytes(buf, len + save_mantissa(d, buf + len), arg);
Index: parse.y
===================================================================
--- parse.y (revision 13429)
+++ parse.y (working copy)
@@ -8554,19 +8554,15 @@ rb_id2str(ID id)
if (is_attrset_id(id)) {
ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL;
+ VALUE str;
- again:
- name = rb_id2name(id2);
- if (name) {
- char *buf = ALLOCA_N(char, strlen(name)+2);
-
- strcpy(buf, name);
- strcat(buf, "=");
- rb_intern(buf);
- return rb_id2str(id);
- }
- if (is_local_id(id2)) {
+ while (!(str = rb_id2str(id2))) {
+ if (!is_local_id(id2)) return 0;
id2 = (id & ~ID_SCOPE_MASK) | ID_CONST;
- goto again;
}
+ str = rb_str_dup(str);
+ rb_str_cat(buf, "=", 1);
+ rb_intern_str(str);
+ if (st_lookup(global_symbols.id_str, id, &data))
+ return (VALUE)data;
}
return 0;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦