Make two list-processing functions do nothing with an empty list.
authorCarl Worth <cworth@cworth.org>
Thu, 27 May 2010 18:55:36 +0000 (11:55 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 27 May 2010 18:55:36 +0000 (11:55 -0700)
This just makes these functions easier to understand all around.  In
the case of _token_list_append_list this is an actual bug fix, (where
append an empty list onto a non-empty list would previously scramble
the tail pointer of the original list).

glcpp-parse.y

index b2684d06d98a3b0070430763251658766fc6f508..ba79a611f6e9bc24d0cc98df9015298b2b6d7f03 100644 (file)
@@ -666,6 +666,9 @@ _token_list_append (token_list_t *list, token_t *token)
 void
 _token_list_append_list (token_list_t *list, token_list_t *tail)
 {
+       if (tail == NULL || tail->head == NULL)
+               return;
+
        if (list->head == NULL) {
                list->head = tail->head;
        } else {
@@ -1218,7 +1221,7 @@ _glcpp_parser_expand_token_list_onto (glcpp_parser_t *parser,
        token_list_t *intermediate, *list_orig = list;
        int i, need_rescan = 0;
 
-       if (list == NULL)
+       if (list == NULL || list->head == NULL)
                return;
 
        intermediate = _token_list_create (parser);