Current code moves the identifier string one byte to the front to
overwrite the bit value, so 'tokens[i]' is a string to compare against
the desired value. This copying is unnecessary, just pass a properly
setup pointer.

Signed-off-by: Wolfram Sang <w...@the-dreams.de>
---
 src/input/vcd.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/input/vcd.c b/src/input/vcd.c
index 6752345..dc61e0c 100644
--- a/src/input/vcd.c
+++ b/src/input/vcd.c
@@ -415,6 +415,8 @@ static void parse_contents(const struct sr_input *in, char 
*data)
                                /* Process next token */
                                continue;
                } else if (strchr("01xXzZ", tokens[i][0]) != NULL) {
+                       char *identifier;
+
                        /* A new 1-bit sample value */
                        bit = (tokens[i][0] == '1');
 
@@ -427,15 +429,14 @@ static void parse_contents(const struct sr_input *in, 
char *data)
                                        sr_dbg("Identifier missing!");
                                        break;
                                }
+                               identifier = tokens[i];
                        } else {
-                               for (j = 1; tokens[i][j]; j++)
-                                       tokens[i][j - 1] = tokens[i][j];
-                               tokens[i][j - 1] = '\0';
+                               identifier = tokens[i] + 1;
                        }
 
                        for (j = 0, l = inc->channels; j < inc->channelcount && 
l; j++, l = l->next) {
                                vcd_ch = l->data;
-                               if (g_strcmp0(tokens[i], vcd_ch->identifier) == 
0) {
+                               if (g_strcmp0(identifier, vcd_ch->identifier) 
== 0) {
                                        /* Found our channel */
                                        size_t byte_idx = (j / 8);
                                        size_t bit_idx = j - 8 * byte_idx;
@@ -447,7 +448,7 @@ static void parse_contents(const struct sr_input *in, char 
*data)
                                }
                        }
                        if (j == inc->channelcount)
-                               sr_dbg("Did not find channel for identifier 
'%s'.", tokens[i]);
+                               sr_dbg("Did not find channel for identifier 
'%s'.", identifier);
                } else {
                        sr_warn("Skipping unknown token '%s'.", tokens[i]);
                }
-- 
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

Reply via email to