[#12763] NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 2001/04/04
[#12765] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/04

Yukihiro Matsumotoさんの

[#12767] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/04

まつもと ゆきひろです

[#12787] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12789] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12790] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/06

Yukihiro Matsumotoさんの

[#12792] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — matz@... (Yukihiro Matsumoto) 2001/04/06

まつもと ゆきひろです

[#12838] Re: NameError (Re: [ruby-list:29101] Re: nil.to_f) — "K.Kosako" <kosako@...> 2001/04/10

Yukihiro Matsumotoさんの

[#12795] recursive malloc / fork deadlock / thread deadlock — "Akinori MUSHA" <knu@...>

 添付のスクリプトで、いくつかのプラットフォームで問題が発生する

43 messages 2001/04/07
[#12799] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/07

まつもと ゆきひろです

[#12801] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/08

なかだです。

[#12802] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12822] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/09

なかだです。

[#12827] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/09

まつもと ゆきひろです

[#12836] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12840] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12852] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12854] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12857] Re: recursive malloc / fork deadlock / thread deadlock — nobu.nakada@... 2001/04/10

なかだです。

[#12859] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12862] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/10

ごとうゆうぞうです。

[#12866] Re: recursive malloc / fork deadlock / thread deadlock — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12878] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12888] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/11

ごとうゆうぞうです。

[#12892] Re: recursive malloc / fork deadlock / thread deadlock — Takahiro Kambe <taca@...> 2001/04/12

完全に理解せずに書いています。

[#12895] Re: recursive malloc / fork deadlock / thread deadlock — Jun Adachi <adachi@...> 2001/04/12

安達@沖データと申します。

[#12898] Re: recursive malloc / fork deadlock / thread deadlock — GOTOU Yuuzou <gotoyuzo@...> 2001/04/12

ごとうゆうぞうです。

[#12830] 1.6.4 preview — "Akinori MUSHA" <knu@...>

 そろそろ FreeBSD 4.3-RELEASE 前の ports のフリーズが迫っている

23 messages 2001/04/09
[#12844] Re: 1.6.4 preview — matz@... (Yukihiro Matsumoto) 2001/04/10

まつもと ゆきひろです

[#12921] ObjectSpace.each_object(Symbol) — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

23 messages 2001/04/13
[#12923] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12928] Re: ObjectSpace.each_object(Symbol) — Hisayasu Nakao <h-nakao@...> 2001/04/13

中尾@富士通です。

[#12929] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[#12934] Re: ObjectSpace.each_object(Symbol) — keiju@... (石塚圭樹) 2001/04/13

けいじゅ@日本ラショナルソフトウェアです.

[#12941] Re: ObjectSpace.each_object(Symbol) — matz@... (Yukihiro Matsumoto) 2001/04/13

まつもと ゆきひろです

[ruby-dev:13017] pack template "P"

From: nobu.nakada@...
Date: 2001-04-21 07:55:06 UTC
List: ruby-dev #13017
なかだです。

  Array#pack と String#unpack の P と p ですが、NULL を指定した
り受け取ったりすることはできないんでしょうか。あと 1.7 の方の p
では NULL が返されると結果がゴミになりそうな。


Index: pack.c
===================================================================
RCS file: /cvs/ruby/src/ruby/pack.c,v
retrieving revision 1.17.2.2
diff -u -2 -p -r1.17.2.2 pack.c
--- pack.c	2001/02/08 09:17:57	1.17.2.2
+++ pack.c	2001/04/21 07:49:00
@@ -852,12 +852,29 @@ pack_pack(ary, fmt)
 
 	  case 'P':
-	    len = 1;
-	    /* FALL THROUGH */
+	    {
+		char *t = NULL;
+		from = NEXTFROM;
+		if (!NIL_P(from)) {
+		    if (TYPE(from) != T_STRING) {
+			from = rb_str_to_str(from);
+		    }
+		    t = rb_str2cstr(from, &plen);
+		    if (plen < len) {
+			rb_raise(rb_eArgError, "too short buffer for P(%d for %d)", plen, len);
+		    }
+		    rb_str_associate(res, from);
+		}
+		rb_str_cat(res, (char*)&t, sizeof(char*));
+	    }
+	    break;
+
 	  case 'p':
 	    while (len-- > 0) {
 		char *t;
 		from = NEXTFROM;
-		if (NIL_P(from)) t = "";
-		else {
+		if (!NIL_P(from)) {
+		    if (TYPE(from) != T_STRING) {
+			from = rb_str_to_str(from);
+		    }
 		    t = STR2CSTR(from);
 		    rb_str_associate(res, from);
@@ -1612,9 +1629,10 @@ pack_unpack(str, fmt)
 	    if (sizeof(char *) <= send - s) {
 		char *t;
-		VALUE str = rb_str_new(0, 0);
+		VALUE str = Qnil;
 		memcpy(&t, s, sizeof(char *));
 		s += sizeof(char *);
-		if (t)
-		    rb_str_cat(str, t, len);
+		if (t) {
+		    str = rb_str_new(t, len);
+		}
 		rb_ary_push(ary, str);
 	    }
@@ -1629,9 +1647,9 @@ pack_unpack(str, fmt)
 		else {
 		    char *t;
-		    VALUE str = rb_str_new(0, 0);
+		    VALUE str = Qnil;
 		    memcpy(&t, s, sizeof(char *));
 		    s += sizeof(char *);
 		    if (t) {
-			rb_str_cat2(str, t);
+			str = rb_str_new2(t);
 		    }
 		    rb_ary_push(ary, str);

Index: pack.c
===================================================================
RCS file: /cvs/ruby/src/ruby/pack.c,v
retrieving revision 1.24
diff -u -2 -p -r1.24 pack.c
--- pack.c	2001/03/26 08:57:10	1.24
+++ pack.c	2001/04/21 07:45:17
@@ -852,15 +852,32 @@ pack_pack(ary, fmt)
 
 	  case 'P':
-	    len = 1;
-	    /* FALL THROUGH */
+	    {
+		char *t = NULL;
+		from = NEXTFROM;
+		if (!NIL_P(from)) {
+		    if (TYPE(from) != T_STRING) {
+			from = rb_str_to_str(from);
+		    }
+		    t = rb_str2cstr(from, &plen);
+		    if (plen < len) {
+			rb_raise(rb_eArgError, "too short buffer for P(%d for %d)", plen, len);
+		    }
+		    rb_str_associate(res, from);
+		}
+		rb_str_cat(res, (char*)&t, sizeof(char*));
+	    }
+	    break;
+
 	  case 'p':
 	    while (len-- > 0) {
-		char *t;
+		char *t = NULL;
 		from = NEXTFROM;
-		if (NIL_P(from)) {
-		    from = rb_str_new(0, 0);
+		if (!NIL_P(from)) {
+		    if (TYPE(from) != T_STRING) {
+			from = rb_str_to_str(from);
+		    }
+		    t = STR2CSTR(from);
+		    rb_str_associate(res, from);
 		}
-		t = STR2CSTR(from);
-		rb_str_associate(res, from);
 		rb_str_cat(res, (char*)&t, sizeof(char*));
 	    }
@@ -1640,5 +1657,5 @@ pack_unpack(str, fmt)
 		}
 		else {
-		    tmp = rb_str_new(0, 0);
+		    tmp = Qnil;
 		}
 		rb_ary_push(ary, tmp);
@@ -1677,4 +1694,7 @@ pack_unpack(str, fmt)
 			}
 			tmp = rb_str_new2(t);
+		    }
+		    else {
+			tmp = Qnil;
 		    }
 		    rb_ary_push(ary, tmp);


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

In This Thread

Prev Next