diff options
author | Axel Beckert <abe@deuxchevaux.org> | 2017-08-10 17:16:37 +0200 |
---|---|---|
committer | Axel Beckert <abe@deuxchevaux.org> | 2017-08-10 17:16:37 +0200 |
commit | e3b67a8198c852bf6c9db3a0a1a20e87a4e1da74 (patch) | |
tree | 8486633f6232f49ea330ab8e036decb5dc3bbf74 /Src/linklist.c | |
parent | f8edeff2494bf23e2ee29d4c761361b1c878e09d (diff) | |
parent | dc475bfa0ec6cd03789dde3bf28f71e0ea9d5003 (diff) | |
download | zsh-e3b67a8198c852bf6c9db3a0a1a20e87a4e1da74.tar.gz zsh-e3b67a8198c852bf6c9db3a0a1a20e87a4e1da74.zip |
Merge tag '5.4.1' into debian
Release 5.4.1.
Diffstat (limited to 'Src/linklist.c')
-rw-r--r-- | Src/linklist.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Src/linklist.c b/Src/linklist.c index 3aa8125d9..85d9bb367 100644 --- a/Src/linklist.c +++ b/Src/linklist.c @@ -348,6 +348,35 @@ newsizedlist(int size) } /* + * Join two linked lists. Neither may be null, though either + * may be empty. + * + * It is assumed the pieces come from the heap, but if not it is + * safe to free LinkList second. + */ + +/**/ +mod_export LinkList +joinlists(LinkList first, LinkList second) +{ + LinkNode moveme = firstnode(second); + if (moveme) { + if (firstnode(first)) { + LinkNode anchor = lastnode(first); + anchor->next = moveme; + moveme->prev = anchor; + } else { + first->list.first = moveme; + moveme->prev = &first->node; + } + first->list.last = second->list.last; + + second->list.first = second->list.last = NULL; + } + return first; +} + +/* * Return the node whose data is the pointer "dat", else NULL. * Can be used as a boolean test. */ |