OK, what happens? There are essentially two situations here:
-> We have already parsed a complete address specification
and know about this fact, but there was no new address
information. This is the case if we are parsing
through addresses like
undisclosed-recipients:;
or
recipients: a, b, c,;
(Note the extra ',' before the ';'!)
In this case, some of the other code in rfc822.c has
already filled in last->val, and we really shouldn't
overwrite that with a NULL pointer.
-> The ';' finishes an address spec, like in
recipients: a;
In this case, last is either set by add_addrspec(), or
it has already been set by some of the previous code
(comment handling, ...). Anyway, last->val is still
NULL, so it is correct to write the complete addr spec
to last->val.