diff --git a/src/backend/nodes/list.c b/src/backend/nodes/list.c index a709d23ef1..750ee5a7e5 100644 --- a/src/backend/nodes/list.c +++ b/src/backend/nodes/list.c @@ -1593,11 +1593,11 @@ list_copy_head(const List *oldlist, int len) { List *newlist; - len = Min(oldlist->length, len); - - if (len <= 0) + if (oldlist == NIL || len <= 0) return NIL; + len = Min(oldlist->length, len); + newlist = new_list(oldlist->type, len); memcpy(newlist->elements, oldlist->elements, len * sizeof(ListCell));