[macruby-changes] [931] MacRuby/branches/experimental/io.c

source_changes at macosforge.org source_changes at macosforge.org
Sun Mar 15 20:12:00 PDT 2009


Revision: 931
          http://trac.macosforge.org/projects/ruby/changeset/931
Author:   lsansonetti at apple.com
Date:     2009-03-15 20:12:00 -0700 (Sun, 15 Mar 2009)
Log Message:
-----------
better status check for streams (if a stream's status is not kCFStreamStatusOpen it doesn't mean it's broken, it could be in another mode (write, read, etc.))

Modified Paths:
--------------
    MacRuby/branches/experimental/io.c

Modified: MacRuby/branches/experimental/io.c
===================================================================
--- MacRuby/branches/experimental/io.c	2009-03-16 02:43:02 UTC (rev 930)
+++ MacRuby/branches/experimental/io.c	2009-03-16 03:12:00 UTC (rev 931)
@@ -126,24 +126,34 @@
     }
 }
 
+static inline void
+rb_io_assert_usable(CFStreamStatus status)
+{
+    if (status == kCFStreamStatusNotOpen
+	|| status == kCFStreamStatusClosed
+	|| status == kCFStreamStatusError) {
+	rb_raise(rb_eIOError, "stream is not usable");
+    }
+}
+
 static void 
 rb_io_assert_writable(rb_io_t *io_struct)
 {
     rb_io_check_initialized(io_struct);
-    if (io_struct->writeStream == NULL
-	|| CFWriteStreamGetStatus(io_struct->writeStream) != kCFStreamStatusOpen) {
-        rb_raise(rb_eIOError, "unable to read stream");
+    if (io_struct->writeStream == NULL) {
+	rb_raise(rb_eIOError, "not opened for writing");
     }
+    rb_io_assert_usable(CFWriteStreamGetStatus(io_struct->writeStream));
 }
 
 static void
 rb_io_assert_readable(rb_io_t *io_struct)
 {
     rb_io_check_initialized(io_struct);
-    if (io_struct->readStream == NULL
-	|| CFReadStreamGetStatus(io_struct->readStream) != kCFStreamStatusOpen) {
-        rb_raise(rb_eIOError, "unable to read stream");
+    if (io_struct->readStream == NULL) {
+	rb_raise(rb_eIOError, "not opened for reading");
     }
+    rb_io_assert_usable(CFReadStreamGetStatus(io_struct->readStream));
 }
 
 static bool
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090315/f27505b4/attachment.html>


More information about the macruby-changes mailing list