File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -127,4 +127,33 @@ def test_write0_timeout_multi2
127
127
io . write_timeout = 0.1
128
128
assert_raise ( Net ::WriteTimeout ) { io . write ( "a" *50 , "a" *50 , "a" ) }
129
129
end
130
+
131
+ class FakeReadPartialIO
132
+ def initialize ( chunks )
133
+ @chunks = chunks . map ( &:dup )
134
+ end
135
+
136
+ def read_nonblock ( size , buf = nil , exception : false )
137
+ if buf
138
+ buf . replace ( @chunks . shift )
139
+ buf
140
+ else
141
+ @chunks . shift
142
+ end
143
+ end
144
+ end
145
+
146
+ def test_shareable_buffer_leak # https://github.com/ruby/net-protocol/pull/19
147
+ expected_chunks = [
148
+ "aaaaa" ,
149
+ "bbbbb" ,
150
+ ]
151
+ fake_io = FakeReadPartialIO . new ( expected_chunks )
152
+ io = Net ::BufferedIO . new ( fake_io )
153
+ actual_chunks = [ ]
154
+ reader = Net ::ReadAdapter . new ( -> ( chunk ) { actual_chunks << chunk } )
155
+ io . read ( 5 , reader )
156
+ io . read ( 5 , reader )
157
+ assert_equal expected_chunks , actual_chunks
158
+ end
130
159
end
You can’t perform that action at this time.
0 commit comments