timeval.t_sec is of type time_t, which is not always compatible with long.
I'm not sure if this was just harmless warning or a real bug, but this
fixes it, anyway.
            if (standby_message_timeout)
            {
                TimestampTz targettime;
+               long        secs;
+               int         usecs;
 
                targettime = TimestampTzPlusMilliseconds(last_status,
                                                standby_message_timeout - 1);
                localTimestampDifference(now,
                                         targettime,
-                                        &timeout.tv_sec,
-                                        (int *) &timeout.tv_usec);
-               if (timeout.tv_sec <= 0)
+                                        &secs,
+                                        &usecs);
+               if (secs <= 0)
                    timeout.tv_sec = 1; /* Always sleep at least 1 sec */
+               else
+                   timeout.tv_sec = secs;
+               timeout.tv_sec = usecs;
                timeoutptr = &timeout;
            }
            else