Chromium Code Reviews| Index: sdk/lib/io/data_transformer.dart |
| diff --git a/sdk/lib/io/data_transformer.dart b/sdk/lib/io/data_transformer.dart |
| index e75335bd49cb077cd80fe9ffa31439030b7fbd65..7bae8dc8818db52134dbb992ed5df237f2746675 100644 |
| --- a/sdk/lib/io/data_transformer.dart |
| +++ b/sdk/lib/io/data_transformer.dart |
| @@ -36,12 +36,14 @@ abstract class _Filter { |
| class _FilterTransformer extends StreamEventTransformer<List<int>, List<int>> { |
| final _Filter _filter; |
| bool _closed = false; |
| + bool _haveData = false; |
|
Søren Gjesse
2013/03/13 08:08:22
_haveData -> _empty?
Anders Johnsen
2013/03/13 08:25:00
Done.
|
| _FilterTransformer(_Filter this._filter); |
| void handleData(List<int> data, EventSink<List<int>> sink) { |
| if (_closed) return; |
| try { |
| + _haveData = true; |
| _filter.process(data); |
| var out; |
| while ((out = _filter.processed(flush: false)) != null) { |
| @@ -56,6 +58,7 @@ class _FilterTransformer extends StreamEventTransformer<List<int>, List<int>> { |
| void handleDone(EventSink<List<int>> sink) { |
| if (_closed) return; |
| + if (!_haveData) _filter.process(const []); |
| try { |
| var out; |
| while ((out = _filter.processed()) != null) { |
| @@ -66,6 +69,7 @@ class _FilterTransformer extends StreamEventTransformer<List<int>, List<int>> { |
| _closed = true; |
| } |
| if (!_closed) _filter.end(); |
| + _closed = true; |
| sink.close(); |
| } |
| } |