> The variables could have more meaningful names, also the reuse of
> variable "gt" looks hackish, but the current code looks correct to me.
>
> Does the diff below make things clearer?
It does. After reading the current code again a few times, it is
as well clear. Incredible how I couldn't see it before.
My apologies! And many thanks for the helpful replies to you and Otto!
Holger
>
> --- privsep.c.~1.53.~ Sat May 11 14:17:40 2019
> +++ privsep.c Sat May 11 14:20:30 2019
> @@ -724,10 +724,12 @@ struct tm *
> priv_localtime(const time_t *t)
> {
> static struct tm lt, gt0;
> - static struct tm *gt = NULL;
> static char zone[PATH_MAX];
> + static int cached = 0;
>
> - if (gt != NULL) {
> + if (cached) {
> + struct tm *gt;
> +
> gt = gmtime(t);
> gt0.tm_sec = gt->tm_sec;
> gt0.tm_zone = gt->tm_zone;
> @@ -749,7 +751,7 @@ priv_localtime(const time_t *t)
> lt.tm_zone = NULL;
>
> gt0.tm_zone = NULL;
> - gt = >0;
> + cached = 1;
>
> return <
> }
>
> --
> jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE