Chromium Code Reviews| Index: lib/src/frame.dart |
| diff --git a/lib/src/frame.dart b/lib/src/frame.dart |
| index 8dde788a734919c831bcc0338bcb89c7e418ae85..08fe33e7113d4d7c9cb4ea338ae1523f9334a4a3 100644 |
| --- a/lib/src/frame.dart |
| +++ b/lib/src/frame.dart |
| @@ -52,9 +52,11 @@ final _firefoxSafariFrame = new RegExp( |
| r'$'); |
| // foo/bar.dart 10:11 Foo._bar |
| +// foo/bar.dart 10:11 (anonymous function).dart.fn |
| // http://dartlang.org/foo/bar.dart Foo._bar |
| +// data:... 10:11 Foo._bar |
| final _friendlyFrame = new RegExp( |
| - r'^(\S+)(?: (\d+)(?::(\d+))?)?\s+([^\d]\S*)$'); |
| + r'^(\S+)(?: (\d+)(?::(\d+))?)?\s+([^\d].*)$'); |
| /// A regular expression that matches asynchronous member names generated by the |
| /// VM. |
| @@ -249,8 +251,11 @@ class Frame { |
| throw new FormatException( |
| "Couldn't parse package:stack_trace stack trace line '$frame'."); |
| } |
| - |
| - var uri = Uri.parse(match[1]); |
| + // Fake truncated data urls generated by the friendly stack trace format |
| + // cause Uri.parse to throw an exception so we have to special case them. |
| + var uri = match[1] == 'data:...' |
| + ? new Uri.dataFromString('...') |
|
nweiz
2017/03/07 21:27:28
Maybe just pass this an empty string. I think that
Jacob
2017/03/07 23:27:20
Done.
|
| + : Uri.parse(match[1]); |
| // If there's no scheme, this is a relative URI. We should interpret it as |
| // relative to the current working directory. |
| if (uri.scheme == '') { |