| Index: sdk/lib/io/string_transformer.dart
|
| diff --git a/sdk/lib/io/string_transformer.dart b/sdk/lib/io/string_transformer.dart
|
| index 33328799a5e5b50a71c7af526ef24fbcf8dc7160..ec6d0e2d03e9efa6de3a67cc7661a0a4098e84a1 100644
|
| --- a/sdk/lib/io/string_transformer.dart
|
| +++ b/sdk/lib/io/string_transformer.dart
|
| @@ -185,12 +185,34 @@ class StringEncoder implements StreamTransformer<String, List<int>> {
|
| String _decodeString(List<int> bytes, [Encoding encoding = Encoding.UTF_8]) {
|
| if (bytes.length == 0) return "";
|
| var string;
|
| + var error;
|
| var controller = new StreamController();
|
| controller.stream
|
| .transform(new StringDecoder(encoding))
|
| - .listen((data) => string = data);
|
| + .listen((data) => string = data,
|
| + onError: (e) => error = e);
|
| controller.add(bytes);
|
| controller.close();
|
| + if (error != null) throw error;
|
| + assert(string != null);
|
| + return string;
|
| +}
|
| +
|
| +
|
| +// Utility function to synchronously decode a utf8-encoded list of bytes,
|
| +// throwing on error.
|
| +String _decodeUtf8Strict(List<int> bytes) {
|
| + if (bytes.length == 0) return "";
|
| + var string;
|
| + var error;
|
| + var controller = new StreamController();
|
| + controller.stream
|
| + .transform(new Utf8DecoderTransformer(null))
|
| + .listen((data) => string = data,
|
| + onError: (e) => error = e);
|
| + controller.add(bytes);
|
| + controller.close();
|
| + if (error != null) throw error;
|
| assert(string != null);
|
| return string;
|
| }
|
|
|