[#36672] [Bug #616] instance_eval and Module#to_s — Shyouhei Urabe <redmine@...>

Bug #616: instance_eval and Module#to_s

12 messages 2008/10/06

[#36750] [Bug #650] Marshal.load raises RegexpError — Shyouhei Urabe <redmine@...>

Bug #650: Marshal.load raises RegexpError

30 messages 2008/10/15
[#36769] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36771] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36772] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36773] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36784] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/18

まつもと ゆきひろです

[#36785] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/18

卜部です。

[#36793] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/19

まつもと ゆきひろです

[#36794] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/19

Yukihiro Matsumoto さんは書きました:

[#36823] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36830] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/21

もとの正規表現にバグがあるのは認めますが、それに巻き込まれてでかいPStore

[#36833] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36764] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...>

まつもとさん、こんばんは。

11 messages 2008/10/17
[#36767] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36799] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...> 2008/10/20

まつもとさん、こんにちは。

[#36774] ConverterNotFoundError while making Ruby in Windows(trunk) — Masaki Suketa <masaki.suketa@...>

助田です。

13 messages 2008/10/17
[#36797] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36800] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定 — "rubikitch ." <redmine@...>

Bug #660: 数字を3桁ずつコンマで区切るsprintf書式指定

13 messages 2008/10/19

[#37007] [Bug:1.9] 1+1+1+...+1 dumps core — "Yusuke ENDOH" <mame@...>

遠藤です。

13 messages 2008/10/31

[ruby-dev:36859] Re: [Bug #674] Failure: test_aset(TestSDBM)

From: Nobuyoshi Nakada <nobu@...>
Date: 2008-10-22 03:13:04 UTC
List: ruby-dev #36859
なかだです。

At Wed, 22 Oct 2008 03:16:57 +0900,
Kazuhiro NISHIYAMA wrote in [ruby-dev:36854]:
> ext/sdbm/init.cのfsdbm_fetchの
>     return rb_external_str_new(value.dptr, value.dsize);
> でvalue = {dptr = "barbarfoo", dsize = 0}となっていて、
> lenに0を指定しているのにstring.cのrb_external_str_new_with_encが
>     if (len == 0 && ptr) len = strlen(ptr);
> でlenを無視してstrlenしてしまっているのが原因のようです。

まだlen==0を指定してrb_external_str_new_with_enc()を呼ぶコードは
ないようですし、rb_{external,locale}_str_new()をそれぞれ二つに分
けたほうがいいんじゃないでしょうか。あるいは、正しい値としてあり
うる0じゃなくて-1あたりにするとか。


Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 19872)
+++ include/ruby/intern.h	(working copy)
@@ -549,5 +549,7 @@ VALUE rb_tainted_str_new(const char*, lo
 VALUE rb_tainted_str_new2(const char*);
 VALUE rb_external_str_new(const char*, long);
+VALUE rb_external_str_new_cstr(const char*);
 VALUE rb_locale_str_new(const char*, long);
+VALUE rb_locale_str_new_cstr(const char*);
 VALUE rb_str_buf_new(long);
 VALUE rb_str_buf_new_cstr(const char*);
@@ -620,4 +622,16 @@ size_t rb_str_capacity(VALUE);
 	rb_usascii_str_new_cstr(str);	       \
 })
+#define rb_external_str_new_cstr(str) __extension__ ( \
+{						\
+    (__builtin_constant_p(str)) ?		\
+	rb_external_str_new(str, strlen(str)) : \
+	rb_external_str_new_cstr(str);		\
+})
+#define rb_locale_str_new_cstr(str) __extension__ ( \
+{					       \
+    (__builtin_constant_p(str)) ?	       \
+	rb_locale_str_new(str, strlen(str)) :  \
+	rb_locale_str_new_cstr(str);	       \
+})
 #define rb_str_buf_new_cstr(str) __extension__ ( \
 {						\
Index: string.c
===================================================================
--- string.c	(revision 19872)
+++ string.c	(working copy)
@@ -29,4 +29,6 @@
 #undef rb_tainted_str_new_cstr
 #undef rb_usascii_str_new_cstr
+#undef rb_external_str_new_cstr
+#undef rb_locale_str_new_cstr
 #undef rb_str_new2
 #undef rb_str_new3
@@ -529,5 +531,4 @@ rb_external_str_new_with_enc(const char 
     VALUE str;
 
-    if (len == 0 && !ptr) len = strlen(ptr);
     str = rb_tainted_str_new(ptr, len);
     rb_enc_associate(str, eenc);
@@ -542,4 +543,11 @@ rb_external_str_new(const char *ptr, lon
 
 VALUE
+rb_external_str_new_cstr(const char *ptr)
+{
+    long len = ptr ? strlen(ptr) : 0;
+    return rb_external_str_new_with_enc(ptr, len, rb_default_external_encoding());
+}
+
+VALUE
 rb_locale_str_new(const char *ptr, long len)
 {
@@ -548,4 +556,11 @@ rb_locale_str_new(const char *ptr, long 
 
 VALUE
+rb_locale_str_new_cstr(const char *ptr)
+{
+    long len = ptr ? strlen(ptr) : 0;
+    return rb_external_str_new_with_enc(ptr, len, rb_locale_encoding());
+}
+
+VALUE
 rb_str_export(VALUE str)
 {


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

In This Thread