You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Goldstein Lyor (JIRA)" <ji...@apache.org> on 2016/04/22 11:25:13 UTC

[jira] [Resolved] (SSHD-663) Wrong if criteria in org.apache.sshd.common.file.util.ImmutableList.subList()

     [ https://issues.apache.org/jira/browse/SSHD-663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Goldstein Lyor resolved SSHD-663.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 1.3.0

[~sirati97] thanks for the test code, but I chose to eliminate the class altogether and use {{Collections#unmodifiableList}} (less code to test and maintain for bugs...)

> Wrong if criteria in org.apache.sshd.common.file.util.ImmutableList.subList()
> -----------------------------------------------------------------------------
>
>                 Key: SSHD-663
>                 URL: https://issues.apache.org/jira/browse/SSHD-663
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 1.1.0, 1.1.1, 1.2.0
>            Reporter: sirati97
>            Assignee: Goldstein Lyor
>            Priority: Minor
>              Labels: easyfix, newbie
>             Fix For: 1.3.0
>
>   Original Estimate: 2m
>  Remaining Estimate: 2m
>
> I do not know whether 1.3.0 is affected.
> in org.apache.sshd.common.file.util.ImmutableList.subList() the if criteria is wrong:
> wrong code:
> {code:java}
> @Override
> public ImmutableList<T> subList(int fromIndex, int toIndex) {
>     if (fromIndex == from && toIndex == to) {
>       return this;
>     }
>     return new ImmutableList<>(data, from + fromIndex, from + toIndex);
> }
> {code}
> should be:
> {code:java}
> @Override
> public ImmutableList<T> subList(int fromIndex, int toIndex) {
>     if (fromIndex == 0 && from+toIndex == to) {
>         return this;
>     }
>     return new ImmutableList<>(data, from + fromIndex, from + toIndex);
> }
> {code}
> Edit:
> [~lgoldstein] proposed that i could contribute to the project and write a test unit. Sadly i don't have enough time right now.
> Anyway i wrote this test unit:
> {code:java}
> public class ImmutableListSubListTest {
>     @Test
>     public void start() {
>         String[] names = new String[] {"Name1","Name2","Name3","Name4","Name5"
>                                       ,"Name6","Name7","Name8","Name9","Name10"};
>         ImmutableList<String> list1 = new ImmutableList<String>(names, 1 , names.length);
>         /*this should not work anyway, as you would move of of the bounds of the parent list
>         But that's not checked
>         */
>         ImmutableList<String> list2 = list1.subList(1 , names.length);
>         assertFalse("List1 and List2 should describe different lists, but they are equal", list1 == list2);
>         ImmutableList<String> list3 = list1.subList(0, list1.size());
>         assertTrue("List1 and List3 should be the same instance as they are immutable and have the same values, but they aren't.", list1 == list3);
>     }
> }
> {code}
> It only runs with my fix.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)