diff options
| author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2018-12-31 04:00:28 -0500 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-31 09:00:28 +0000 |
| commit | 95e378a28b0e0ba1d05f2a41bc27a7368aac66f4 (patch) | |
| tree | 4df653a73ffbbe4d62a79d69d743fe6f6224ae50 /net | |
| parent | b5f6f972342dbc5e1a4a3116743d812ec6baddea (diff) | |
Avoid textproto crashing on empty reader (denoland/deno_std#50)
Original: https://github.com/denoland/deno_std/commit/9eb6aa5fd9da9da9cd2b96a5199cf9b9128fd456
Diffstat (limited to 'net')
| -rw-r--r-- | net/textproto.ts | 5 | ||||
| -rw-r--r-- | net/textproto_test.ts | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/net/textproto.ts b/net/textproto.ts index 342d74b33..832299e1c 100644 --- a/net/textproto.ts +++ b/net/textproto.ts @@ -118,11 +118,12 @@ export class TextProtoReader { async readLineSlice(): Promise<[Uint8Array, BufState]> { // this.closeDot(); - let line: null | Uint8Array; + let line: Uint8Array; while (true) { let [l, more, err] = await this.r.readLine(); if (err != null) { - return [null, err]; + // Go's len(typed nil) works fine, but not in JS + return [new Uint8Array(0), err]; } // Avoid the copy if the first call produced a full line. if (line == null && !more) { diff --git a/net/textproto_test.ts b/net/textproto_test.ts index ad7e6a2c4..3af21247a 100644 --- a/net/textproto_test.ts +++ b/net/textproto_test.ts @@ -93,3 +93,10 @@ test(async function textprotoAppend() { const joined = append(u1, u2); assertEqual(dec.decode(joined), "Hello World"); }); + +test(async function textprotoReadEmpty() { + let r = reader(""); + let [m, err] = await r.readMIMEHeader(); + // Should not crash! + assertEqual(err, "EOF"); +}); |
