From f6bd5afa429a14ad6288cbe63df54f67afd1ac85 Mon Sep 17 00:00:00 2001 From: Hanjoung Lee Date: Wed, 9 Dec 2015 16:50:57 +0900 Subject: [PATCH] Fix linked-list removal of last element JerryScript-DCO-1.0-Signed-off-by: Hanjoung Lee hanjoung.lee@samsung.com --- jerry-core/parser/js/collections/linked-list.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jerry-core/parser/js/collections/linked-list.cpp b/jerry-core/parser/js/collections/linked-list.cpp index a053e4661..22cd43dec 100644 --- a/jerry-core/parser/js/collections/linked-list.cpp +++ b/jerry-core/parser/js/collections/linked-list.cpp @@ -276,6 +276,7 @@ linked_list_remove_element (linked_list list, /**< linked list's identifier */ linked_list_header *header_p = (linked_list_header *) list; linked_list_chunk_header *list_chunk_iter_p = (linked_list_chunk_header *) (header_p + 1u); + linked_list_chunk_header *chunk_prev_to_chunk_with_last_elem_p = list_chunk_iter_p; const size_t list_length = header_p->list_length; const size_t element_size = header_p->element_size; @@ -286,13 +287,15 @@ linked_list_remove_element (linked_list list, /**< linked list's identifier */ for (size_t i = 0; i < element_num; i++) { + chunk_prev_to_chunk_with_last_elem_p = list_chunk_iter_p; element_iter_p = linked_list_switch_to_next_elem (header_p, &list_chunk_iter_p, element_iter_p); JERRY_ASSERT (element_iter_p != NULL); } uint8_t *next_elem_iter_p = linked_list_switch_to_next_elem (header_p, &list_chunk_iter_p, element_iter_p); - linked_list_chunk_header *chunk_prev_to_chunk_with_last_elem_p = list_chunk_iter_p; + JERRY_ASSERT ((element_num + 1 == list_length && next_elem_iter_p == NULL) + || (next_elem_iter_p != NULL)); for (size_t i = element_num + 1; i < list_length; i++) {