Use the new process_bit() function to parse 1 bit vectors, too. This is the first step to fix bug #723. Minimal testcase vcd:
$timescale 1 ns $end $var wire 1 n0 addr_0 $end $var wire 1 n1 addr_1 $end $enddefinitions $end #0 0n0 b1 n1 #1 1n0 b0 n1 #2 0n0 b1 n1 #3 1n0 b0 n1 Signed-off-by: Wolfram Sang <w...@the-dreams.de> --- src/input/vcd.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/input/vcd.c b/src/input/vcd.c index 61508e0..0dd52b1 100644 --- a/src/input/vcd.c +++ b/src/input/vcd.c @@ -428,14 +428,28 @@ static void parse_contents(const struct sr_input *in, char *data) inc->skip_until_end = TRUE; break; } - } else if (strchr("bBrR", tokens[i][0]) != NULL) { - sr_dbg("Vector values not supported yet"); + } else if (strchr("rR", tokens[i][0]) != NULL) { + sr_dbg("Real type vector values not supported yet"); if (!tokens[++i]) /* No tokens left, bail out */ break; else /* Process next token */ continue; + } else if (strchr("bB", tokens[i][0]) != NULL) { + bit = (tokens[i][1] == '1'); + + /* + * Bail out if a) char after 'b' is NUL, or b) there is + * a second character after 'b', or c) there is no + * identifier. + */ + if (!tokens[i][1] || tokens[i][2] || !tokens[++i]) { + sr_dbg("Unexpected vector format!"); + break; + } + + process_bit(inc, tokens[i], bit); } else if (strchr("01xXzZ", tokens[i][0]) != NULL) { char *identifier; -- 2.1.4 ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel