[glib: 13/25] Fixing various warnings in glib/gtimezone.c
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 13/25] Fixing various warnings in glib/gtimezone.c
- Date: Tue, 19 Mar 2019 11:03:56 +0000 (UTC)
commit 9f44506d28658b077319c27eee69b84f1f1bd8f5
Author: Emmanuel Fleury <emmanuel fleury u-bordeaux fr>
Date: Mon Feb 4 13:15:12 2019 +0100
Fixing various warnings in glib/gtimezone.c
glib/gtimezone.c: In function ‘g_time_zone_unref’:
glib/gtimezone.c:241:29: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
for (idx = 0; idx < tz->t_info->len; idx++)
^
In file included from glib/glibconfig.h:9,
from glib/gtypes.h:32,
from glib/gtimezone.h:27,
from glib/gtimezone.c:24:
glib/gtimezone.c: In function ‘init_zone_from_iana_info’:
glib/gtimezone.c:578:34: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
g_assert (trans.info_index < gtz->t_info->len);
^
glib/gmacros.h:455:25: note: in definition of macro ‘G_LIKELY’
#define G_LIKELY(expr) (expr)
^~~~
glib/gtimezone.c:578:7: note: in expansion of macro ‘g_assert’
g_assert (trans.info_index < gtz->t_info->len);
^~~~~~~~
glib/gtimezone.c: In function ‘find_relative_date’:
glib/gtimezone.c:859:22: error: comparison of integer expressions of different signedness: ‘GDateWeekday’
{aka ‘enum <anonymous>’} and ‘gint’ {aka ‘int’} [-Werror=sign-compare]
if (first_wday > wday)
^
glib/gtimezone.c: In function ‘init_zone_from_rules’:
glib/gtimezone.c:938:19: error: comparison of integer expressions of different signedness: ‘guint’ {aka
‘unsigned int’} and ‘int’ [-Werror=sign-compare]
for (ri = 0; ri < rules_num - 1; ri++)
^
glib/gtimezone.c:958:19: error: comparison of integer expressions of different signedness: ‘guint’ {aka
‘unsigned int’} and ‘int’ [-Werror=sign-compare]
for (ri = 0; ri < rules_num - 1; ri++)
^
glib/gtimezone.c: In function ‘g_time_zone_adjust_time’:
glib/gtimezone.c:1792:17: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
for (i = 0; i <= intervals; i++)
^~
glib/gtimezone.c:1825:39: error: comparison of integer expressions of different signedness: ‘gboolean’
{aka ‘int’} and ‘GTimeType’ {aka ‘enum <anonymous>’} [-Werror=sign-compare]
else if (interval_isdst (tz, i) != type)
^~
glib/gtimezone.c:1832:22: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
else if (i < intervals &&
^
glib/gtimezone.c: In function ‘g_time_zone_find_interval’:
glib/gtimezone.c:1881:17: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
for (i = 0; i <= intervals; i++)
^~
glib/gtimezone.c:1900:35: error: comparison of integer expressions of different signedness: ‘gboolean’
{aka ‘int’} and ‘GTimeType’ {aka ‘enum <anonymous>’} [-Werror=sign-compare]
else if (interval_isdst (tz, i) != type)
^~
glib/gtimezone.c:1905:18: error: comparison of integer expressions of different signedness: ‘gint’ {aka
‘int’} and ‘guint’ {aka ‘unsigned int’} [-Werror=sign-compare]
else if (i < intervals && time_ >= interval_local_start (tz, i + 1))
^
glib/gtimezone.c | 62 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 36 insertions(+), 26 deletions(-)
---
diff --git a/glib/gtimezone.c b/glib/gtimezone.c
index 3d38b17bf..f418401ee 100644
--- a/glib/gtimezone.c
+++ b/glib/gtimezone.c
@@ -237,7 +237,7 @@ again:
if (tz->t_info != NULL)
{
- gint idx;
+ guint idx;
for (idx = 0; idx < tz->t_info->len; idx++)
{
TransitionInfo *info = &g_array_index (tz->t_info, TransitionInfo, idx);
@@ -575,7 +575,7 @@ init_zone_from_iana_info (GTimeZone *gtz,
trans.time = gint32_from_be (((gint32_be*)tz_transitions)[index]);
trans.info_index = tz_type_index[index];
g_assert (trans.info_index >= 0);
- g_assert (trans.info_index < gtz->t_info->len);
+ g_assert ((guint) trans.info_index < gtz->t_info->len);
g_array_append_val (gtz->transitions, trans);
}
}
@@ -690,7 +690,7 @@ register_tzi_to_tzi (RegTZI *reg, TIME_ZONE_INFORMATION *tzi)
tzi->DaylightBias = reg->DaylightBias;
}
-static gint
+static guint
rules_from_windows_time_zone (const gchar *identifier,
gchar **out_identifier,
TimeZoneRule **rules)
@@ -702,7 +702,7 @@ rules_from_windows_time_zone (const gchar *identifier,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\";
TIME_ZONE_INFORMATION tzi;
DWORD size;
- gint rules_num = 0;
+ guint rules_num = 0;
RegTZI regtzi, regtzi_prev;
g_assert (out_identifier != NULL);
@@ -830,7 +830,7 @@ failed:
static void
find_relative_date (TimeZoneDate *buffer)
{
- gint wday;
+ guint wday;
GDate date;
g_date_clear (&date, 1);
wday = buffer->wday;
@@ -923,7 +923,7 @@ fill_transition_info_from_rule (TransitionInfo *info,
static void
init_zone_from_rules (GTimeZone *gtz,
TimeZoneRule *rules,
- gint rules_num,
+ guint rules_num,
gchar *identifier /* (transfer full) */)
{
guint type_count = 0, trans_count = 0, info_index = 0;
@@ -1214,7 +1214,7 @@ parse_tz_boundary (const gchar *identifier,
}
}
-static gint
+static guint
create_ruleset_from_rule (TimeZoneRule **rules, TimeZoneRule *rule)
{
*rules = g_new0 (TimeZoneRule, 2);
@@ -1306,7 +1306,7 @@ parse_identifier_boundaries (gchar **pos, TimeZoneRule *tzr)
* Creates an array of TimeZoneRule from a TZ environment variable
* type of identifier. Should free rules afterwards
*/
-static gint
+static guint
rules_from_identifier (const gchar *identifier,
gchar **out_identifier,
TimeZoneRule **rules)
@@ -1779,8 +1779,8 @@ g_time_zone_adjust_time (GTimeZone *tz,
GTimeType type,
gint64 *time_)
{
- gint i;
- guint intervals;
+ guint i, intervals;
+ gboolean interval_is_dst;
if (tz->transitions == NULL)
return 0;
@@ -1822,16 +1822,21 @@ g_time_zone_adjust_time (GTimeZone *tz,
*time_ = interval_local_start (tz, i);
}
- else if (interval_isdst (tz, i) != type)
- /* it's in this interval, but dst flag doesn't match.
- * check neighbours for a better fit. */
+ else
{
- if (i && *time_ <= interval_local_end (tz, i - 1))
- i--;
-
- else if (i < intervals &&
- *time_ >= interval_local_start (tz, i + 1))
- i++;
+ interval_is_dst = interval_isdst (tz, i);
+ if ((interval_is_dst && type != G_TIME_TYPE_DAYLIGHT) ||
+ (!interval_is_dst && type == G_TIME_TYPE_DAYLIGHT))
+ {
+ /* it's in this interval, but dst flag doesn't match.
+ * check neighbours for a better fit. */
+ if (i && *time_ <= interval_local_end (tz, i - 1))
+ i--;
+
+ else if (i < intervals &&
+ *time_ >= interval_local_start (tz, i + 1))
+ i++;
+ }
}
}
@@ -1872,8 +1877,8 @@ g_time_zone_find_interval (GTimeZone *tz,
GTimeType type,
gint64 time_)
{
- gint i;
- guint intervals;
+ guint i, intervals;
+ gboolean interval_is_dst;
if (tz->transitions == NULL)
return 0;
@@ -1897,13 +1902,18 @@ g_time_zone_find_interval (GTimeZone *tz,
return -1;
}
- else if (interval_isdst (tz, i) != type)
+ else
{
- if (i && time_ <= interval_local_end (tz, i - 1))
- i--;
+ interval_is_dst = interval_isdst (tz, i);
+ if ((interval_is_dst && type != G_TIME_TYPE_DAYLIGHT) ||
+ (!interval_is_dst && type == G_TIME_TYPE_DAYLIGHT))
+ {
+ if (i && time_ <= interval_local_end (tz, i - 1))
+ i--;
- else if (i < intervals && time_ >= interval_local_start (tz, i + 1))
- i++;
+ else if (i < intervals && time_ >= interval_local_start (tz, i + 1))
+ i++;
+ }
}
return i;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]