artonです。

1.9になって、Stringの代わりにSymbolが返るように変わったメソッドがありま
すが(例: Object#methods)、できれば既存の拡張ライブラリや組み込みRuby
に対して救済策が欲しいです。
具体的には、StringValuPtrやStringValueCStrマクロに対してSymbolのVALUEを
与えた場合に、StringのVALUEを与えた場合と同様に振る舞って欲しいです。
確か、StringValuePtr等のマクロは、1.6から1.8(1.7)への移行時に、char*取得
方法としてCプログラムに対して与えられたと記憶しているからです。
しかし、これらのマクロに対してSymbolを与えると現時点では、Symbol#to_str
は未定義なのでrb_str_to_str経由でTypeErrorになります。
Symbol#to_strを実装するか、あるいは、rb_string_valueでSymbolをString同様
に特別扱いしていただけると助かります。

*** string.c.org	Mon Feb 02 23:46:37 2009
--- string.c	Mon Feb 02 23:49:34 2009
*************** rb_string_value(volatile VALUE *ptr)
*** 1236,1242 ****
  {
      VALUE s = *ptr;
      if (TYPE(s) != T_STRING) {
! 	s = rb_str_to_str(s);
  	*ptr = s;
      }
      return s;
--- 1236,1247 ----
  {
      VALUE s = *ptr;
      if (TYPE(s) != T_STRING) {
!         if (SYMBOL_P(s)) {
!             s = rb_sym_to_s(s);
!         }
!         else {
! 	    s = rb_str_to_str(s);
! 	}
  	*ptr = s;
      }
      return s;

-- 
arton <artonx / yahoo.co.jp>

--------------------------------------
Yahoo! JAPAN - Internet safety for children and parents.
http://pr.mail.yahoo.co.jp/security/