[glib: 1/2] gtask: Ensure to return 1 or 0 from getters rather than truthy ints
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] gtask: Ensure to return 1 or 0 from getters rather than truthy ints
- Date: Sat, 5 Jan 2019 09:08:37 +0000 (UTC)
commit ae381d795e178740915defb23a4e54eb7791d8c6
Author: Philip Withnall <withnall endlessm com>
Date: Sat Jan 5 07:51:14 2019 +0000
gtask: Ensure to return 1 or 0 from getters rather than truthy ints
Since commit 290bb0dd, where various members of GTask were converted to
a bitfield, some of the getters:
• g_task_get_check_cancellable()
• g_task_get_return_on_cancel()
• g_task_get_completed()
have been returning truthy ints (zero or an arbitrary non-zero integer)
as boolean values, rather than the canonical boolean ints of 1 and 0.
This broke the `yield` statement in Vala, whose generated C code
compares `g_task_get_completed (…) != TRUE`. i.e. Whether the
`completed` field has a value not equal to 1.
Fix this by explicitly converting truthy ints to canonical boolean ints
in all getters.
Signed-off-by: Philip Withnall <withnall endlessm com>
https://gitlab.gnome.org/GNOME/glib/issues/1636
gio/gtask.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gio/gtask.c b/gio/gtask.c
index a2f316d2e..aa98f752c 100644
--- a/gio/gtask.c
+++ b/gio/gtask.c
@@ -1132,7 +1132,8 @@ g_task_get_check_cancellable (GTask *task)
{
g_return_val_if_fail (G_IS_TASK (task), FALSE);
- return task->check_cancellable;
+ /* Convert from a bit field to a boolean. */
+ return task->check_cancellable ? TRUE : FALSE;
}
/**
@@ -1149,7 +1150,8 @@ g_task_get_return_on_cancel (GTask *task)
{
g_return_val_if_fail (G_IS_TASK (task), FALSE);
- return task->return_on_cancel;
+ /* Convert from a bit field to a boolean. */
+ return task->return_on_cancel ? TRUE : FALSE;
}
/**
@@ -1952,7 +1954,8 @@ g_task_get_completed (GTask *task)
{
g_return_val_if_fail (G_IS_TASK (task), FALSE);
- return task->completed;
+ /* Convert from a bit field to a boolean. */
+ return task->completed ? TRUE : FALSE;
}
/**
@@ -2055,7 +2058,7 @@ g_task_get_property (GObject *object,
switch ((GTaskProperty) prop_id)
{
case PROP_COMPLETED:
- g_value_set_boolean (value, task->completed);
+ g_value_set_boolean (value, g_task_get_completed (task));
break;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]