On 01/09/2016 02:35 PM, enh wrote: > Fix a misspelled (and slightly technically inaccurate) comment, and fix an > accidental self-assignment.
It's not accidental. Self-assignment at initialization is a way to get gcc to shut up about "may be used uninitialized, but isn't actually" errors. In this case, if I remove the assignment it goes: toys/other/hwclock.c:96:13: warning: 's' may be used uninitialized in this function [-Wmaybe-uninitialized] free(s); ^ When the logic block is: if (!w) { char *s; xioctl(fd, RTC_RD_TIME, &tm); if (TT.utc) s = xtzset("UTC0"); if ((time = mktime(&tm)) < 0) error_exit("mktime failed"); if (TT.utc) { free(xtzset(s)); free(s); } } I.E. the assignment and use are under the same test of the same variable, but since it's a global variable gcc can't confirm it's not changing between the two of them even though we know it isn't. Maybe someday the --whole-tree stuff will advance to the point it can stop producing false positives, but not yet. Self-assignment generates no code (always optimized out) and signals to the compiler that it can shut up about the stupid warning. It's used in a few places for exactly that purpose. Rob _______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net