[#13083] [PATCH] ruby 1.7 compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#13087] importing forwardable — "Akinori MUSHA" <knu@...>
石塚さんの forwardable.rb を標準添付ライブラリにするべく、
まつもと ゆきひろです
At Thu, 3 May 2001 15:03:48 +0900,
At Thu, 3 May 2001 17:46:21 +0900,
けいじゅ@日本ラショナルソフトウェアです.
At Fri, 4 May 2001 04:07:37 +0900,
けいじゅ@日本ラショナルソフトウェアです.
[#13114] defined? $& — Koji Arai <JCA02266@...>
新井です。
[#13116] instance_eval のバグ — Masato KIYAMA <masato@...>
木山です.
なかだです。
前田です。
前田です。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>
岡田です。
At Sun, 13 May 2001 14:11:18 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 00:24:45 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 08:59:23 +0900,
まつもと ゆきひろです
At Tue, 15 May 2001 03:31:54 +0900,
まつもと ゆきひろです
わたなべです。
さきほど、 HEAD への ruby-sha1 のインポートを完了しました。 :)
こんにちは、なかむら(う)です。
[#13195] スレッドで ctrl-c が効かなくなる ? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
新井です。
新井です。
[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>
ruby-dev に移ります。
間違えて ruby-list に送ってしまったので、 ruby-dev に出し
まつもと ゆきひろです
At Wed, 16 May 2001 01:01:31 +0900,
Akinori MUSHAさんの<86ae4envtc.wl@archon.local.idaemons.org>から
At Wed, 16 May 2001 13:48:20 +0900,
[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
まつもと ゆきひろです
At Mon, 21 May 2001 06:04:32 +0900,
原です。
At Mon, 21 May 2001 15:00:11 +0900,
原です。
At Tue, 22 May 2001 19:02:10 +0900,
原です。
At Tue, 22 May 2001 20:57:02 +0900,
原です。
At Thu, 24 May 2001 15:44:14 +0900,
ごとうゆうぞうです。
[#13266] ruby-1.7 irb — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>
ruby 1.7のext/dbmですが、
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>
安井です。
まつもと ゆきひろです
At Wed, 23 May 2001 08:59:50 +0900,
At Thu, 24 May 2001 14:15:04 +0900,
まつもと ゆきひろです
At Thu, 24 May 2001 16:52:24 +0900,
[#13299] Proc#call weirdness ? — "Akinori MUSHA" <knu@...>
Proc#call は引数を配列化して渡しているようですが、これを
まつもと ゆきひろです
At Thu, 24 May 2001 14:25:22 +0900,
原です。
まつもと ゆきひろです
[#13336] lib/README — Kazuhiro NISHIYAMA <zn@...>
ruby_1_6のlib/READMEにcgi.rb,forwardable.rb,irb.rbの説明が
[#13357] glob & fnmatch — "Akinori MUSHA" <knu@...>
以下の機能追加をするのはいかがでしょうか。
[#13366] StringBuffer — Shugo Maeda <shugo@...>
前田です。
[#13370] clearerr(3) — Satoru Takabayashi <satoru@...>
高林と申します
Satoru Takabayashi <satoru@namazu.org> wrote:
[#13391] TCL_PACKAGE_PATH — WATANABE Hirofumi <eban@...>
わたなべです.
[#13415] ruby-gtk-0.24,0.25 が CPU を使い切る — a-shigi@...
ども鴫原です。
<20010531002634.371239@localhost>の記事において
[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[ruby-dev:13094] Re: patch for ext/gdbm
新井です。
ruby 1.7.0 (2001-05-02) [i586-linux]
ですが、パッチのようにした方が GDBM#clear は速いようです。
file = "/tmp/foo.gdbm"
File.delete(file) rescue nil
gdbm = GDBM.new(file)
10000.times {|i|
gdbm[i.to_s] = i.to_s
}
start = Time.now
gdbm.clear
p Time.now - start
=> (パッチ前) 18.167391
=> (パッチ後) 1.122306
あと、GDBM#delete を Hash のインタフェースにあわせてみました。
パッチ前
o 削除した後 self を返す
o 値がなければ nil を返す。ブロックがあればそれを評価した後 nil を返す
パッチ後
o 削除した値を返す
o 値がなければnilを返す。ただしブロックが指定されていればその結果を返す。
# test が同梱されてない...
Index: ext/gdbm/gdbm.c
===================================================================
RCS file: /src/ruby/ext/gdbm/gdbm.c,v
retrieving revision 1.15
diff -u -p -u -r1.15 gdbm.c
--- ext/gdbm/gdbm.c 2001/05/02 04:22:18 1.15
+++ ext/gdbm/gdbm.c 2001/05/03 07:12:11
@@ -354,31 +354,11 @@ static VALUE
fgdbm_delete(obj, keystr)
VALUE obj, keystr;
{
- datum key;
- struct dbmdata *dbmp;
- GDBM_FILE dbm;
-
- rb_secure(4);
- StringValue(keystr);
- key.dptr = RSTRING(keystr)->ptr;
- key.dsize = RSTRING(keystr)->len;
+ VALUE valstr;
- GetDBM(obj, dbmp);
- dbm = dbmp->di_dbm;
-
- if (!gdbm_exists(dbm, key)) {
- if (rb_block_given_p()) rb_yield(keystr);
- return Qnil;
- }
-
- if (gdbm_delete(dbm, key)) {
- dbmp->di_size = -1;
- rb_raise(rb_eGDBMError, "%s", gdbm_strerror(gdbm_errno));
- }
- else if (dbmp->di_size >= 0) {
- dbmp->di_size--;
- }
- return obj;
+ valstr = fgdbm_fetch(obj, keystr, Qnil);
+ rb_gdbm_delete(obj, keystr);
+ return valstr;
}
static VALUE
@@ -438,7 +418,7 @@ static VALUE
fgdbm_clear(obj)
VALUE obj;
{
- datum key;
+ datum key, nextkey;
struct dbmdata *dbmp;
GDBM_FILE dbm;
@@ -447,6 +427,7 @@ fgdbm_clear(obj)
dbm = dbmp->di_dbm;
dbmp->di_size = -1;
+#if 0
while (key = gdbm_firstkey(dbm), key.dptr) {
if (gdbm_delete(dbm, key)) {
free(key.dptr);
@@ -454,6 +435,19 @@ fgdbm_clear(obj)
}
free(key.dptr);
}
+#else
+ while (key = gdbm_firstkey(dbm), key.dptr) {
+ for (; key.dptr; key = nextkey) {
+ nextkey = gdbm_nextkey(dbm, key);
+ if (gdbm_delete(dbm, key)) {
+ free(key.dptr);
+ if (nextkey.dptr) free(nextkey.dptr);
+ rb_raise(rb_eGDBMError, "%s", gdbm_strerror(gdbm_errno));
+ }
+ free(key.dptr);
+ }
+ }
+#endif
dbmp->di_size = 0;
return obj;
--
新井康司 (Koji Arai)