RFR: 8079136: Accessing a nested sublist leads to StackOverflowError
daniel.fuchs at oracle.com
Tue May 5 08:14:50 UTC 2015
Have you considered to simply override/change subList(int fromIndex, int
in SubList and RandomAccessSubList - so that 'l'/'parent' points always
to the original
root list (instead of being a sublist of sublist of sublist)?
It seems to me that overriding sublist to create a sublist based on
'l'/'parent' instead of basing it on 'this' would solve the same problem
with much less modifications... Or am I maybe missing something?
On 5/5/15 9:17 AM, Ivan Gerasimov wrote:
> When creating a sublist with List.subList(), it keeps a reference to
> its parent.
> Then, when accessing (get(), set(), add(), remove(), etc.) the
> sublist, it recursively calls the corresponding methods of its parent.
> This recursion, when deep enough, can cause StackOverflowError.
> The only reason to do things recursively here, is the need to update
> modCount and size of all the parents.
> So, the proposal is to update these fields in a loop.
> A few cleanups were done along the way.
> Would you please help review the fix?
> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8079136
> WEBREV: http://cr.openjdk.java.net/~igerasim/8079136/0/webrev/
> Sincerely yours,
More information about the core-libs-dev