From: sheepman Date: 2007-04-14T14:01:13+09:00 Subject: [ruby-dev:30710] errors that StringIO#seek raises こんにちは 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