summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ext/openssl/lib/openssl/buffering.rb2
-rw-r--r--test/openssl/test_buffering.rb66
-rw-r--r--version.h2
4 files changed, 75 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 520d8d7a25..5919d1cb6d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
+ not change sync mode on exception.
+ * test/openssl/test_buffering.rb: added
+
Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
* lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb
index 3028fe5b52..cc1f08f563 100644
--- a/ext/openssl/lib/openssl/buffering.rb
+++ b/ext/openssl/lib/openssl/buffering.rb
@@ -328,6 +328,8 @@ module Buffering
osync = @sync
@sync = true
do_write ""
+ return self
+ ensure
@sync = osync
end
diff --git a/test/openssl/test_buffering.rb b/test/openssl/test_buffering.rb
new file mode 100644
index 0000000000..49335de8d2
--- /dev/null
+++ b/test/openssl/test_buffering.rb
@@ -0,0 +1,66 @@
+require_relative 'utils'
+require 'stringio'
+require 'minitest/unit'
+
+class OpenSSL::TestBuffering < MiniTest::Unit::TestCase
+
+ class IO
+ include OpenSSL::Buffering
+
+ attr_accessor :sync
+
+ def initialize
+ @io = StringIO.new
+
+ super
+
+ @sync = false
+ end
+
+ def string
+ @io.string
+ end
+
+ def sysread *a
+ @io.sysread *a
+ end
+
+ def syswrite *a
+ @io.syswrite *a
+ end
+ end
+
+ def setup
+ @io = IO.new
+ end
+
+ def test_flush
+ @io.write 'a'
+
+ refute @io.sync
+ assert_empty @io.string
+
+ assert_equal @io, @io.flush
+
+ refute @io.sync
+ assert_equal 'a', @io.string
+ end
+
+ def test_flush_error
+ @io.write 'a'
+
+ refute @io.sync
+ assert_empty @io.string
+
+ def @io.syswrite *a
+ raise SystemCallError, 'fail'
+ end
+
+ assert_raises SystemCallError do
+ @io.flush
+ end
+
+ refute @io.sync, 'sync must not change'
+ end
+
+end if defined?(OpenSSL)
diff --git a/version.h b/version.h
index 8712f80a42..481e2f88a5 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 215
+#define RUBY_PATCHLEVEL 216
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1