[#10007] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...>

青山です。

31 messages 2000/06/11
[#10008] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/11

青山です。

[#10018] Re: [ruby-talk:03267] Re: mod_ruby error? — Shugo Maeda <shugo@...> 2000/06/13

前田です。

[#10027] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/13

青山です。

[#10028] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/13

青山です。

[#10029] Re: [ruby-talk:03267] Re: mod_ruby error? — Shugo Maeda <shugo@...> 2000/06/13

前田です。

[#10035] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/13

青山です。

[#10038] Re: [ruby-talk:03267] Re: mod_ruby error? — Shugo Maeda <shugo@...> 2000/06/14

前田です。

[#10041] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/14

青山です。

[#10045] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/14

青山です。

[#10046] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/14

青山です。

[#10047] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/14

青山です。

[#10048] Re: [ruby-talk:03267] Re: mod_ruby error? — Wakou Aoyama <wakou@...> 2000/06/14

青山です。

[#10135] don't use mktemp() — Shugo Maeda <shugo@...>

前田です。

35 messages 2000/06/27
[#10136] Re: don't use mktemp() — matz@... (Yukihiro Matsumoto) 2000/06/27

まつもと ゆきひろです

[#10137] Re: don't use mktemp() — Shugo Maeda <shugo@...> 2000/06/27

前田です。

[#10141] Re: don't use mktemp() — kjana@... (YANAGAWA Kazuhisa) 2000/06/27

In message <874s6f1rqj.wl@studly.netlab.co.jp>

[#10143] Re: don't use mktemp() — WATANABE Hirofumi <eban@...> 2000/06/27

わたなべです.

[#10181] Re: don't use mktemp() — Katsuyuki Komatsu <komatsu@...> 2000/07/03

小松です。

[#10183] Re: don't use mktemp() — WATANABE Hirofumi <eban@...> 2000/07/03

わたなべです.

[ruby-dev:10054] [PATCH] *dbm closed check BUG

From: Satoshi Nojo <nojo@...>
Date: 2000-06-15 18:47:07 UTC
List: ruby-dev #10054
能條といいます.

dbm,gdbm,sdbm に共通のバグで,データベースを閉じた後,

  + DBM#[]=
  + DBM#length
  + DBM#empty?

のいずれかを行うと Ruby が落ちます.

以下サンプルコードとパッチです.
----
require "dbm"
d = DBM.open("test")
d.close

p "-- []= --"
d['foobar'] = 'FB' #=> X-O

p "-- length --"
d.length           #=> X-O

p "-- empty? --"
d.empty?           #=> X-O

p "-- end --"
----

----
Satoshi Nojo
eMail: nojo@t-samukawa.or.jp
HomePage:
  http://www.geocities.co.jp/SiliconValley-PaloAlto/1409/ruby/

# Ruby はバグが見つかるとすぐに修正されていて,
# その修正の早さにいつも驚いています.


--- ruby-1.4/ext/dbm/dbm.c.orig	Mon Apr 10 14:48:40 2000
+++ ruby-1.4/ext/dbm/dbm.c	Fri Jun 16 03:17:36 2000
@@ -98,8 +98,7 @@
 {
     struct dbmdata *dbmp;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
-    if (dbmp->di_dbm == 0) closed_dbm();
+    GetDBM(obj, dbmp);
     dbm_close(dbmp->di_dbm);
     dbmp->di_dbm = 0;
 
@@ -328,7 +327,7 @@
     val.dptr = RSTRING(valstr)->ptr;
     val.dsize = RSTRING(valstr)->len;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     dbmp->di_size = -1;
     dbm = dbmp->di_dbm;
     if (dbm_store(dbm, key, val, DBM_REPLACE)) {
@@ -351,7 +350,7 @@
     DBM *dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
     dbm = dbmp->di_dbm;
 
@@ -372,7 +371,7 @@
     DBM *dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size < 0) {
 	dbm = dbmp->di_dbm;
 
--- ruby-1.4/ext/gdbm/gdbm.c.orig	Mon Apr 10 14:48:42 2000
+++ ruby-1.4/ext/gdbm/gdbm.c	Fri Jun 16 02:41:50 2000
@@ -99,8 +99,7 @@
 {
     struct dbmdata *dbmp;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
-    if (dbmp->di_dbm == 0) closed_dbm();
+    GetDBM(obj, dbmp);
     gdbm_close(dbmp->di_dbm);
     dbmp->di_dbm = 0;
 
@@ -330,7 +329,7 @@
     val.dptr = RSTRING(valstr)->ptr;
     val.dsize = RSTRING(valstr)->len;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     dbmp->di_size = -1;
     dbm = dbmp->di_dbm;
     if (gdbm_store(dbm, key, val, GDBM_REPLACE)) {
@@ -350,7 +349,7 @@
     GDBM_FILE dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
     dbm = dbmp->di_dbm;
 
@@ -371,7 +370,7 @@
     GDBM_FILE dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size < 0) {
 	dbm = dbmp->di_dbm;
 
--- ruby-1.4/ext/sdbm/init.c.orig	Fri Aug 13 14:37:50 1999
+++ ruby-1.4/ext/sdbm/init.c	Fri Jun 16 02:43:28 2000
@@ -95,8 +95,7 @@
 {
     struct dbmdata *dbmp;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
-    if (dbmp->di_dbm == 0) closed_sdbm();
+    GetDBM(obj, dbmp);
     sdbm_close(dbmp->di_dbm);
     dbmp->di_dbm = 0;
 
@@ -325,7 +324,7 @@
     val.dptr = RSTRING(valstr)->ptr;
     val.dsize = RSTRING(valstr)->len;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     dbmp->di_size = -1;
     dbm = dbmp->di_dbm;
     if (sdbm_store(dbm, key, val, DBM_REPLACE)) {
@@ -348,7 +347,7 @@
     DBM *dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size > 0) return INT2FIX(dbmp->di_size);
     dbm = dbmp->di_dbm;
 
@@ -369,7 +368,7 @@
     DBM *dbm;
     int i = 0;
 
-    Data_Get_Struct(obj, struct dbmdata, dbmp);
+    GetDBM(obj, dbmp);
     if (dbmp->di_size < 0) {
 	dbm = dbmp->di_dbm;
 


In This Thread

Prev Next