From ad577091edf288e549c730933c514852b471991c Mon Sep 17 00:00:00 2001 From: Sachin Date: Mon, 6 Aug 2018 21:22:17 +0530 Subject: [PATCH] MDEV-16904 inline void swap(base_list &rhs) should swap list only when list is... not empty We should swap the list only when list is not empty. --- sql/sql_list.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sql/sql_list.h b/sql/sql_list.h index 08667bed02a..8956a786715 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -306,10 +306,13 @@ public: */ inline void swap(base_list &rhs) { + list_node **rhs_last=rhs.last; swap_variables(list_node *, first, rhs.first); - swap_variables(list_node **, last, rhs.last); swap_variables(uint, elements, rhs.elements); + rhs.last= last == &first ? &rhs.first : last; + last = rhs_last == &rhs.first ? &first : rhs_last; } + inline list_node* last_node() { return *last; } inline list_node* first_node() { return first;} inline void *head() { return first->info; }