Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Unified Diff: ui/accessibility/platform/ax_platform_node_auralinux.cc

Issue 1129813004: Possible deferencing from nullptrs in AtkComponent interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_auralinux.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/accessibility/platform/ax_platform_node_auralinux.cc
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc
index 9686bf5cd9db316c34243d9655b3fa72357304c9..05e290d31064f09bb15e6a64ea520a5ec4e033d1 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -204,7 +204,17 @@ static void ax_platform_node_auralinux_get_extents(AtkComponent* atk_component,
gint* x, gint* y,
gint* width, gint* height,
AtkCoordType coord_type) {
- *x = *y = *width = *height = 0;
+ g_return_if_fail(ATK_IS_COMPONENT(atk_component));
+
+ if (x)
+ *x = 0;
+ if (y)
+ *y = 0;
+ if (width)
+ *width = 0;
+ if (height)
+ *height = 0;
+
AtkObject* atk_object = ATK_OBJECT(atk_component);
ui::AXPlatformNodeAuraLinux* obj =
AtkObjectToAXPlatformNodeAuraLinux(atk_object);
@@ -217,7 +227,13 @@ static void ax_platform_node_auralinux_get_extents(AtkComponent* atk_component,
static void ax_platform_node_auralinux_get_position(AtkComponent* atk_component,
gint* x, gint* y,
AtkCoordType coord_type) {
- *x = *y = 0;
+ g_return_if_fail(ATK_IS_COMPONENT(atk_component));
+
+ if (x)
+ *x = 0;
+ if (y)
+ *y = 0;
+
AtkObject* atk_object = ATK_OBJECT(atk_component);
ui::AXPlatformNodeAuraLinux* obj =
AtkObjectToAXPlatformNodeAuraLinux(atk_object);
@@ -229,7 +245,13 @@ static void ax_platform_node_auralinux_get_position(AtkComponent* atk_component,
static void ax_platform_node_auralinux_get_size(AtkComponent* atk_component,
gint* width, gint* height) {
- *width = *height = 0;
+ g_return_if_fail(ATK_IS_COMPONENT(atk_component));
+
+ if (width)
+ *width = 0;
+ if (height)
+ *height = 0;
+
AtkObject* atk_object = ATK_OBJECT(atk_component);
ui::AXPlatformNodeAuraLinux* obj =
AtkObjectToAXPlatformNodeAuraLinux(atk_object);
@@ -465,43 +487,50 @@ int AXPlatformNodeAuraLinux::GetIndexInParent() {
return 0;
}
-void AXPlatformNodeAuraLinux::GetExtents(gint* x, gint* y,
- gint* width, gint* height,
- AtkCoordType coord_type) {
+void AXPlatformNodeAuraLinux::SetExtentsRelativeToAtkCoordinateType(
+ gint* x, gint* y, gint* width, gint* height, AtkCoordType coord_type) {
gfx::Rect extents = GetBoundsInScreen();
- *x = extents.x();
- *y = extents.y();
- *width = extents.width();
- *height = extents.height();
+ if (x)
+ *x = extents.x();
+ if (y)
+ *y = extents.y();
+ if (width)
+ *width = extents.width();
+ if (height)
+ *height = extents.height();
if (coord_type == ATK_XY_WINDOW) {
AtkObject* atk_object = GetParent();
gfx::Point window_coords = FindAtkObjectParentCoords(atk_object);
- *x -= window_coords.x();
- *y -= window_coords.y();
+ if (x)
+ *x -= window_coords.x();
+ if (y)
+ *y -= window_coords.y();
}
}
+void AXPlatformNodeAuraLinux::GetExtents(gint* x, gint* y,
+ gint* width, gint* height,
+ AtkCoordType coord_type) {
+ SetExtentsRelativeToAtkCoordinateType(x, y,
+ width, height,
+ coord_type);
+}
+
void AXPlatformNodeAuraLinux::GetPosition(gint* x, gint* y,
AtkCoordType coord_type) {
- gfx::Rect rect_pos = GetBoundsInScreen();
-
- *x = rect_pos.x();
- *y = rect_pos.y();
-
- if (coord_type == ATK_XY_WINDOW) {
- AtkObject* atk_object = GetParent();
- gfx::Point window_coords = FindAtkObjectParentCoords(atk_object);
- *x -= window_coords.x();
- *y -= window_coords.y();
- }
+ SetExtentsRelativeToAtkCoordinateType(x, y,
+ nullptr,nullptr,
+ coord_type);
}
void AXPlatformNodeAuraLinux::GetSize(gint* width, gint* height) {
gfx::Rect rect_size = GetData().location;
- *width = rect_size.width();
- *height = rect_size.height();
+ if (width)
+ *width = rect_size.width();
+ if (height)
+ *height = rect_size.height();
}
} // namespace ui
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_auralinux.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698