| ... | @@ -155,7 +155,7 @@ fn stream(r: *Reader, w: *Writer, limit: Limit) Reader.StreamError!usize { | ... | @@ -155,7 +155,7 @@ fn stream(r: *Reader, w: *Writer, limit: Limit) Reader.StreamError!usize { |
| 155 | const d: *Decompress = @alignCast(@fieldParentPtr("reader", r)); | 155 | const d: *Decompress = @alignCast(@fieldParentPtr("reader", r)); |
| 156 | const in = d.input; | 156 | const in = d.input; |
| 157 | | 157 | |
| 158 | switch (d.state) { | 158 | state: switch (d.state) { |
| 159 | .new_frame => { | 159 | .new_frame => { |
| 160 | // Only return EndOfStream when there are exactly 0 bytes remaining on the | 160 | // Only return EndOfStream when there are exactly 0 bytes remaining on the |
| 161 | // frame magic. Any partial magic bytes should be considered a failure. | 161 | // frame magic. Any partial magic bytes should be considered a failure. |
| ... | @@ -174,14 +174,7 @@ fn stream(r: *Reader, w: *Writer, limit: Limit) Reader.StreamError!usize { | ... | @@ -174,14 +174,7 @@ fn stream(r: *Reader, w: *Writer, limit: Limit) Reader.StreamError!usize { |
| 174 | d.err = err; | 174 | d.err = err; |
| 175 | return error.ReadFailed; | 175 | return error.ReadFailed; |
| 176 | }; | 176 | }; |
| 177 | return readInFrame(d, w, limit, &d.state.in_frame) catch |err| switch (err) { | 177 | continue :state d.state; |
| 178 | error.ReadFailed => return error.ReadFailed, | | |
| 179 | error.WriteFailed => return error.WriteFailed, | | |
| 180 | else => |e| { | | |
| 181 | d.err = e; | | |
| 182 | return error.ReadFailed; | | |
| 183 | }, | | |
| 184 | }; | | |
| 185 | }, | 178 | }, |
| 186 | .in_frame => |*in_frame| { | 179 | .in_frame => |*in_frame| { |
| 187 | return readInFrame(d, w, limit, in_frame) catch |err| switch (err) { | 180 | return readInFrame(d, w, limit, in_frame) catch |err| switch (err) { |