On Fri, Feb 16, 2018 at 01:55:02PM +0100, Ævar Arnfjörð Bjarmason wrote: > On Thu, Feb 15, 2018 at 4:27 PM, <lars.schneider@xxxxxxxxxxxx> wrote: > > Since 3733e69464 (use xmallocz to avoid size arithmetic, 2016-02-22) we > > allocate the buffer for the lower case string with xmallocz(). This > > already ensures a NUL at the end of the allocated buffer. > > > > Remove the unnecessary assignment. > > [...] > > for (i = 0; i < len; i++) > > result[i] = tolower(string[i]); > > - result[i] = '\0'; > > return result; > > } > > I agree with this approach, but it's worth noting for other reviewers > that there's been some disagreement here on-list (between Eric & I) > about whether these sorts of patterns should be removed or kept > (although the calloc() case is slightly different from mallocz()), > see: https://public-inbox.org/git/871shum182.fsf@xxxxxxxxxxxxxxxxxxx/ Hmm. I do think xmallocz is a bit more explicit instruction of "please NUL-terminate this for me" than xcalloc is. So I don't think it's inconsistent to say this one is OK, but the trailing-NULL one that you linked is not. I'm not sure that I have a strong opinion on either case. But in general I'd probably err on the side of leaving such lines in, for the sake of being explicit. Of course this particular case could just be: char *result = xstrdup(string); for (i = 0; result[i]; i++) result[i] = tolower(result[i]); I picked the current implementation in 88d5a6f6cd (daemon/config: factor out duplicate xstrdup_tolower, 2014-05-22) because it might be more efficient (it avoids an extra copy), but I doubt it matters much in practice. -Peff