From 5236badaa8b972bd9f74ab8e1a561d04b8bbcd88 Mon Sep 17 00:00:00 2001 From: Julien Peeters Date: Fri, 11 Sep 2009 21:01:27 +0200 Subject: [PATCH] Fix a bug in TreeMap implementation Fixes part of bug 594868. The access to child nodes two level deeper does not check that the child at the intermediate level is not null. --- gee/treemap.vala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gee/treemap.vala b/gee/treemap.vala index 69d374a..53c40cc 100644 --- a/gee/treemap.vala +++ b/gee/treemap.vala @@ -180,7 +180,7 @@ public class Gee.TreeMap : Gee.AbstractMap { private void move_red_left (ref Node root) { root.flip (); - if (is_red (root.right.left)) { + if (root.right != null && is_red (root.right.left)) { rotate_right (ref root.right); rotate_left (ref root); root.flip (); @@ -189,7 +189,7 @@ public class Gee.TreeMap : Gee.AbstractMap { private void move_red_right (ref Node root) { root.flip (); - if (is_red (root.left.left)) { + if (root.left != null && is_red (root.left.left)) { rotate_right (ref root.right); root.flip (); } @@ -239,7 +239,7 @@ public class Gee.TreeMap : Gee.AbstractMap { _size--; return true; } - if (is_black (r) && is_black (r.left)) { + if (r == null || (is_black (r) && is_black (r.left))) { move_red_right (ref node); } if (key_compare_func (key, node.key) == 0) { -- 2.7.4