summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2019-08-14 16:18:37 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2019-08-19 11:15:49 +0200
commit9118d44778e4d3a05810012cdcaa69eb4db2c389 (patch)
tree94f81ef4e4184f1af19f5a700163f3a56e1ecc4c
parent57af1951823d6e855e2e37bb345070913449653d (diff)
downloadatk-9118d44778e4d3a05810012cdcaa69eb4db2c389.tar.gz
Make sure returned values are initialized
Some methods do not have a way to notify that they have failed. They should thus make sure that they set some value, rather than let them uninitialized and thus random. It allows to be sure that Orca will have a well-defined behavior rather than possibly very erratic behavior.
-rw-r--r--atk/atkcomponent.c26
-rw-r--r--atk/atktext.c10
-rw-r--r--atk/atkvalue.c5
3 files changed, 41 insertions, 0 deletions
diff --git a/atk/atkcomponent.c b/atk/atkcomponent.c
index e4a9c63..080d521 100644
--- a/atk/atkcomponent.c
+++ b/atk/atkcomponent.c
@@ -258,6 +258,9 @@ atk_component_ref_accessible_at_point (AtkComponent *component,
*
* Gets the rectangle which gives the extent of the @component.
*
+ * If the extent can not be obtained (e.g. a non-embedded plug or missing
+ * support), all of x, y, width, height are set to -1.
+ *
**/
void
atk_component_get_extents (AtkComponent *component,
@@ -294,6 +297,13 @@ atk_component_get_extents (AtkComponent *component,
if (iface->get_extents)
(iface->get_extents) (component, real_x, real_y, real_width, real_height, coord_type);
+ else
+ {
+ *real_x = -1;
+ *real_y = -1;
+ *real_width = -1;
+ *real_height = -1;
+ }
}
/**
@@ -307,6 +317,9 @@ atk_component_get_extents (AtkComponent *component,
* Gets the position of @component in the form of
* a point specifying @component's top-left corner.
*
+ * If the position can not be obtained (e.g. a non-embedded plug or missing
+ * support), x and y are set to -1.
+ *
* Deprecated: Since 2.12. Use atk_component_get_extents() instead.
**/
void
@@ -334,6 +347,11 @@ atk_component_get_position (AtkComponent *component,
if (iface->get_position)
(iface->get_position) (component, real_x, real_y, coord_type);
+ else
+ {
+ *real_x = -1;
+ *real_y = -1;
+ }
}
/**
@@ -344,6 +362,9 @@ atk_component_get_position (AtkComponent *component,
*
* Gets the size of the @component in terms of width and height.
*
+ * If the size can not be obtained (e.g. a non-embedded plug or missing
+ * support), width and height are set to -1.
+ *
* Deprecated: Since 2.12. Use atk_component_get_extents() instead.
**/
void
@@ -372,6 +393,11 @@ atk_component_get_size (AtkComponent *component,
if (iface->get_size)
(iface->get_size) (component, real_width, real_height);
+ else
+ {
+ *real_width = -1;
+ *real_height = -1;
+ }
}
/**
diff --git a/atk/atktext.c b/atk/atktext.c
index 23034c7..8f2e498 100644
--- a/atk/atktext.c
+++ b/atk/atktext.c
@@ -1062,6 +1062,9 @@ atk_text_set_caret_offset (AtkText *text,
*
* Get the bounding box for text within the specified range.
*
+ * If the extents can not be obtained (e.g. or missing support), the rectangle
+ * fields are set to -1.
+ *
* Since: 1.3
**/
void
@@ -1081,6 +1084,13 @@ atk_text_get_range_extents (AtkText *text,
if (iface->get_range_extents)
(*(iface->get_range_extents)) (text, start_offset, end_offset, coord_type, rect);
+ else
+ {
+ rect->x = -1;
+ rect->y = -1;
+ rect->width = -1;
+ rect->height = -1;
+ }
}
/**
diff --git a/atk/atkvalue.c b/atk/atkvalue.c
index d52d754..5f56541 100644
--- a/atk/atkvalue.c
+++ b/atk/atkvalue.c
@@ -547,6 +547,11 @@ atk_value_get_value_and_text (AtkValue *obj,
{
(iface->get_value_and_text) (obj, value, text);
}
+ else
+ {
+ *value = 0.0;
+ *text = NULL;
+ }
}
/**