From patchwork Mon Dec 17 12:06:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: ma.jiang@zte.com.cn X-Patchwork-Id: 30691 Received: (qmail 94248 invoked by alias); 17 Dec 2018 12:06:22 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 94058 invoked by uid 89); 17 Dec 2018 12:06:21 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: =?ISO-8859-1?Q?No, score=-16.4 required=5.0 tests=BAYES_00, BODY_8BITS, GARBLED_BODY, GARBLED_SUBJECT, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS, UNPARSEABLE_RELAY autolearn=ham version=3.3.2 spammy==e4=ba=ba=ef=bc, 17=e6, SUSE, fingerprint?= X-HELO: mxhk.zte.com.cn Date: Mon, 17 Dec 2018 20:06:10 +0800 (CST) X-Zmail-TransId: 2b055c179132c1b1e135 Message-ID: <201812172006103612868@zte.com.cn> In-Reply-To: References: 201812171717582865803@zte.com.cn,mvmbm5k5w5u.fsf@suse.de Mime-Version: 1.0 From: To: Cc: , Subject: =?UTF-8?B?UmU6W1BBVENIXSDCoMKgdHpzZXQgZGlkIG5vdCBjYXRjaCBjaGFuZ2VzIHRvbG9jYWx0aW1lwqAgW0JawqAjMjEwNjDCoF0=?= X-MAIL: mse01.zte.com.cn wBHC689c092704 Hi schwab, Thanks for the quick reply. I have changed the patch into the following one, as you suggested. Is it OK now? ------------------原始邮件------------------ 发件人:AndreasSchwab 收件人:马江10100629; 抄送人:carlos@redhat.com ;libc-alpha@sourceware.org ; 日 期 :2018年12月17日 17:40 主 题 :Re: [PATCH] tzset did not catch changes tolocaltime [BZ #21060 ] On Dez 17 2018, wrote: > + /* Check whether the tz value changed since the last run. */ > + int tz_changed = old_tz ? strcmp (tz, old_tz) : 1; This should be written as old_tz == NULL || strcmp (tz, old_tz) != 0, and tz_changed should be bool. > + if ((old_tz == NULL) > + || (old_tz != NULL && tz_changed)) This is the same as tz_changed. > + { > + /* Save the value of `tz'. */ > + free (old_tz); > + old_tz = __strdup (tz); > + } Wrong indentation. Andreas. --- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." diff --git a/time/tzset.c b/time/tzset.c index b517867..1431097 100644 --- a/time/tzset.c +++ b/time/tzset.c @@ -386,22 +386,27 @@ tzset_internal (int always) if (tz && *tz == ':') ++tz; - /* Check whether the value changed since the last run. */ - if (old_tz != NULL && tz != NULL && strcmp (tz, old_tz) == 0) - /* No change, simply return. */ - return; - if (tz == NULL) /* No user specification; use the site-wide default. */ tz = TZDEFAULT; + /* Check whether the tz value changed since the last run. */ + bool tz_changed = (old_tz == NULL) || (strcmp (tz, old_tz) != 0); + if (old_tz == NULL || tz_changed) + { + /* Save the value of `tz'. */ + free (old_tz); + old_tz = __strdup (tz); + } + + /* When using tzfile, must check whether it changed in __tzfile_read. */ + if (!__use_tzfile && !tz_changed) + return; + + /* Going to recaculate values. */ tz_rules[0].name = NULL; tz_rules[1].name = NULL; - /* Save the value of `tz'. */ - free (old_tz); - old_tz = tz ? __strdup (tz) : NULL; - /* Try to read a data file. */ __tzfile_read (tz, 0, NULL); if (__use_tzfile)