[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