Kaydet (Commit) 46e12364 authored tarafından Matthew J. Francis's avatar Matthew J. Francis Kaydeden (comit) Norbert Thiebaud

Fix insertion and deletion in IndexedPropertyValuesContainer

The cases for iterating to an element from the end (used for
elements in the second half of the underlying array) had an off by
one error causing the wrong elements to be inserted/removed

Change-Id: Idcbf158cc31afaf02fce3f1975509edf6239d3ae
Reviewed-on: https://gerrit.libreoffice.org/16073Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNorbert Thiebaud <nthiebaud@gmail.com>
üst 8f324aeb
......@@ -116,7 +116,7 @@ void SAL_CALL IndexedPropertyValuesContainer::insertByIndex( sal_Int32 nIndex, c
else
{
aItr = maProperties.end();
sal_Int32 i(nSize - 1);
sal_Int32 i(nSize);
while(i > nIndex)
{
--i;
......@@ -151,7 +151,7 @@ void SAL_CALL IndexedPropertyValuesContainer::removeByIndex( sal_Int32 nIndex )
else
{
aItr = maProperties.end();
sal_Int32 i(nSize - 1);
sal_Int32 i(nSize);
while(i > nIndex)
{
--i;
......
......@@ -53,6 +53,11 @@ public class CheckIndexedPropertyValues {
prop2[0].Name = "Horst";
prop2[0].Value = "BadGuy";
PropertyValue[] prop3 = new PropertyValue[1];
prop3[0] = new PropertyValue();
prop3[0].Name = "Peter";
prop3[0].Value = "FamilyGuy";
Type t = xCont.getElementType();
assertEquals("Initial container is not empty", 0, xCont.getCount());
xCont.insertByIndex(0, prop1);
......@@ -70,6 +75,17 @@ public class CheckIndexedPropertyValues {
xCont.insertByIndex(1, prop2);
assertTrue("Did not insert PropertyValue.",
xCont.hasElements() && xCont.getCount()==2);
try {
xCont.removeByIndex(1);
}
catch (com.sun.star.lang.IndexOutOfBoundsException e) {
fail("Could not remove last PropertyValue");
}
xCont.insertByIndex(1, prop2);
xCont.insertByIndex(1, prop3);
ret = (PropertyValue[])xCont.getByIndex(1);
assertEquals(prop3[0].Name, ret[0].Name);
assertEquals(prop3[0].Value, ret[0].Value);
try {
xCont.insertByIndex(25, prop2);
......@@ -86,7 +102,7 @@ public class CheckIndexedPropertyValues {
}
try {
xCont.insertByIndex(2, "Example String");
xCont.insertByIndex(3, "Example String");
fail("IllegalArgumentException was not thrown.");
}
catch(com.sun.star.lang.IllegalArgumentException e) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment