From 11c0eef489118ca30ff3f4f5ae4c42bcdd5213ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurko=20Gospodneti=C4=87?= Date: Sat, 7 Jun 2008 16:45:04 +0000 Subject: [PATCH] Corrected the vector.insert rule so it works correctly when given an index lager than the number of elements in the given vector (patch by Rick Yang). Added new related tests. [SVN r46216] --- src/util/container.jam | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/util/container.jam b/src/util/container.jam index 1e7c9cb67..406dbc70b 100644 --- a/src/util/container.jam +++ b/src/util/container.jam @@ -153,8 +153,11 @@ class vector : node ) { local left = $(self.value[1-$(index)]) ; - left = $(left[1--2]) ; local right = $(self.value[$(index)-]) ; + if $(right)-is-defined + { + left = $(left[1--2]) ; + } self.value = $(left) $(value) $(right) ; } @@ -316,4 +319,22 @@ local rule __test__ ( ) local v6 = [ new vector [ new vector 1 2 3 ] ] ; assert.true $(v6).equal [ new vector [ new vector 1 2 3 ] ] ; + + local v7 = [ new vector 111 222 333 ] ; + $(v7).insert 4 : 444 ; + assert.result 111 222 333 444 : $(v7).get ; + $(v7).insert 999 : xxx ; + assert.result 111 222 333 444 xxx : $(v7).get ; + + local v8 = [ new vector "" "" "" ] ; + assert.result 3 : $(v8).size ; + $(v8).insert 2 : 222 ; + assert.result 4 : $(v8).size ; + assert.result "" 222 "" "" : $(v8).get ; + $(v8).insert 999 : "" ; + assert.result 5 : $(v8).size ; + assert.result "" 222 "" "" "" : $(v8).get ; + $(v8).insert 999 : xxx ; + assert.result 6 : $(v8).size ; + assert.result "" 222 "" "" "" xxx : $(v8).get ; }