[#30722] JSON ライブラリの取り込み — "NARUSE, Yui" <naruse@...>

naruseです。

20 messages 2007/04/21

[ruby-dev:30710] errors that StringIO#seek raises

From: sheepman <sheepman@...>
Date: 2007-04-14 05:01:13 UTC
List: ruby-dev #30710
こんにちは sheepman です。

リファレンスを書いていて気がついた細かい話ですが。

StringIO#seek が投げる例外を、IO クラスのそれに合わせるパッチです。

* 自身が close されていたら、IOError を投げるようにしました。
* whence の値が正しくない場合は、Errno::EINVAL を投げるようにしました。

$ svn diff
Index: stringio.c
===================================================================
--- stringio.c  (revision 12131)
+++ stringio.c  (working copy)
@@ -643,6 +643,9 @@
     struct StringIO *ptr = StringIO(self);
     long offset;

+    if (CLOSED(ptr)) {
+       rb_raise(rb_eIOError, "closed stream");
+    }
     rb_scan_args(argc, argv, "11", NULL, &whence);
     offset = NUM2LONG(argv[0]);
     switch (NIL_P(whence) ? 0 : NUM2LONG(whence)) {
@@ -655,7 +658,7 @@
        offset += RSTRING(ptr->string)->len;
        break;
       default:
-       rb_raise(rb_eArgError, "invalid whence %ld", NUM2LONG(whence));
+       error_inval("invalid whence");
     }
     if (offset < 0) {
        error_inval(0);

それでは。

-- 
sheepman / TAMURA Takashi
sheepman@sheepman.sakura.ne.jp

In This Thread

Prev Next