diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-09-13 01:16:22 +0000 |
|---|---|---|
| committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2016-09-13 01:16:22 +0000 |
| commit | ee551f4827cf861c84916726ceea0e3bb8afc46c (patch) | |
| tree | aaeefd37e790ca8b776ae5018237deda891b39d4 | |
| parent | 97c45dae54bc4d4fc3a24155ef7703beac4ae7aa (diff) | |
lib: Fix various matching bugs
Missed a copy, disambigs forgot to walkback
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| -rw-r--r-- | lib/command_match.c | 9 | ||||
| -rw-r--r-- | lib/command_parse.y | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/command_match.c b/lib/command_match.c index 68dda6f9cd..3faa059a44 100644 --- a/lib/command_match.c +++ b/lib/command_match.c @@ -208,7 +208,8 @@ command_match_r (struct graph_node *start, vector vline, unsigned int n) // that all nodes have the same data type, so when // deleting this list the last node must be // manually deleted - listnode_add (currbest, leaf->data); + struct cmd_element *el = leaf->data; + listnode_add (currbest, copy_cmd_element (el)); currbest->del = (void (*)(void *)) &del_cmd_token; break; } @@ -533,8 +534,10 @@ disambiguate (struct list *first, char *token = vector_slot(vline, i); if ((best = disambiguate_tokens (ftok, stok, token))) return best == ftok ? first : second; - ftok = listgetdata (listnextnode (fnode)); - stok = listgetdata (listnextnode (snode)); + fnode = listnextnode (fnode); + snode = listnextnode (snode); + ftok = listgetdata (fnode); + stok = listgetdata (snode); } return NULL; diff --git a/lib/command_parse.y b/lib/command_parse.y index a5d391d19e..bd958c5ace 100644 --- a/lib/command_parse.y +++ b/lib/command_parse.y @@ -446,7 +446,7 @@ doc_next() { char *piece = NULL; if (!docstr || !(piece = strsep (&docstr, "\n"))) - return NULL; + return XSTRDUP (MTYPE_CMD_TOKENS, ""); return XSTRDUP (MTYPE_CMD_TOKENS, piece); } |
