From: Junio C Hamano Date: Thu, 21 Sep 2017 01:12:48 GMT Subject: Re: [PATCH v2] for_each_string_list_item: avoid undefined behavior for empty list Message-ID: In-Reply-To: <87lgl9rqbq.fsf@linux-m68k.org> Andreas Schwab writes: > On Sep 20 2017, Jonathan Nieder wrote: > >> Andreas Schwab wrote: >>> On Sep 19 2017, Jonathan Nieder wrote: >> >>>> B. #define for_each_string_list_item(item, list) \ >>>> if (list->items) \ >>>> for (item = ...; ...; ... ) >>>> >>>> This breaks a caller like >>>> if (foo) >>>> for_each_string_list_item(item, list) >>>> ... >>>> else >>>> ... >>>> >>>> making it a non-starter. >>> >>> That can be fixed with a dangling else. >> >> I believe the fix you're referring to is option C, from the same email >> you are replying to. If not, please correct me. > > A variant thereof, yes. Now you make me curious. How would that variant be different from option C. in Jonathan's message? Perhaps that different version may be a solution to work around the potential issue mentioned in the description of option C.?