From 37c996dcf49702774302c69855ed6f573fa74de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 23 Jan 2020 18:03:13 +0000 Subject: [PATCH] clockoverlay: fix bogus time display caused by previous commit Fixes regression introduced by "clean-up" done as part of commit 98ebcb4. dummy must live as long as use the return value of localtime_r() since that's just a pointer to it, and by putting it inside the block we made dummy go out of scope right after localtime_r() returned, which messed up the time values since when we poked at the struct the contents might already have been overwritten. Fixes #722 --- ext/pango/gstclockoverlay.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ext/pango/gstclockoverlay.c b/ext/pango/gstclockoverlay.c index 1a0258d210..ba8e625e65 100644 --- a/ext/pango/gstclockoverlay.c +++ b/ext/pango/gstclockoverlay.c @@ -75,6 +75,9 @@ static void gst_clock_overlay_get_property (GObject * object, guint prop_id, static gchar * gst_clock_overlay_render_time (GstClockOverlay * overlay) { +#ifdef HAVE_LOCALTIME_R + struct tm dummy; +#endif struct tm *t; time_t now; gchar buf[256]; @@ -82,14 +85,10 @@ gst_clock_overlay_render_time (GstClockOverlay * overlay) now = time (NULL); #ifdef HAVE_LOCALTIME_R - { - struct tm dummy; - - /* Need to call tzset explicitly when calling localtime_r for changes - * to the timezone between calls to be visible. */ - tzset (); - t = localtime_r (&now, &dummy); - } + /* Need to call tzset explicitly when calling localtime_r for changes + * to the timezone between calls to be visible. */ + tzset (); + t = localtime_r (&now, &dummy); #else /* on win32 this apparently returns a per-thread struct which would be fine */ t = localtime (&now);