From cdee9d64206d3cae46fe0b1852ab6791b833bea0 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Wed, 24 Jan 2018 16:00:04 -0400 Subject: [PATCH] Fix bug with MI Parsing if there is a list with empty strings A JavaScript string is a falsy value - but an empty string is valid in these positions - so need to explicitly check for undefined instead of just falsy. --- src/backend/mi_parse.ts | 2 +- test/mi_parse.test.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/backend/mi_parse.ts b/src/backend/mi_parse.ts index 76503c2..594ddf3 100644 --- a/src/backend/mi_parse.ts +++ b/src/backend/mi_parse.ts @@ -213,7 +213,7 @@ export function parseMI(output: string): MINode { let values = []; values.push(value); let remaining = output; - while (value = parseCommaValue()) + while ((value = parseCommaValue()) !== undefined) values.push(value); output = output.substr(1); // ] return values; diff --git a/test/mi_parse.test.ts b/test/mi_parse.test.ts index 69fc555..bf290b5 100644 --- a/test/mi_parse.test.ts +++ b/test/mi_parse.test.ts @@ -173,4 +173,9 @@ suite("MI Parse", () => { assert.equal(MINode.valueOf(obj[1], "@frame.fullname"), undefined); assert.equal(MINode.valueOf(obj[1], "@frame.line"), undefined); }); + test("empty string values", () => { + let parsed = parseMI(`15^done,register-names=["r0","pc","","xpsr","","control"]`); + let result = parsed.result('register-names'); + assert.deepEqual(result, ["r0", "pc", "", "xpsr", "", "control"]); + }); }); \ No newline at end of file