summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vytree.ml6
-rw-r--r--test/vyconf_tree_test.ml2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/vytree.ml b/src/vytree.ml
index 89743fb..ed1a23e 100644
--- a/src/vytree.ml
+++ b/src/vytree.ml
@@ -87,8 +87,10 @@ let delete node path =
do_with_child delete_immediate node path
let update node path data =
- let update_data data' node' dummy =
- {node' with data=data'}
+ let update_data data' node' name =
+ let child = find_or_fail node' name in
+ let child = { child with data=data' } in
+ replace node' child
in do_with_child (update_data data) node path
let rec get node path =
diff --git a/test/vyconf_tree_test.ml b/test/vyconf_tree_test.ml
index eca40ce..3d8c52a 100644
--- a/test/vyconf_tree_test.ml
+++ b/test/vyconf_tree_test.ml
@@ -94,7 +94,7 @@ let test_get_child_nonexistent test_ctxt =
let test_update test_ctxt =
let node = make "root" 0 in
let node = insert 0 node ["foo"] 1 in
- assert_equal (data_of_node (update node ["foo"] 9)) 9
+ assert_equal (data_of_node (get (update node ["foo"] 9) ["foo"])) 9
let suite =
"VyConf tree tests" >::: [