On Mon, 9 Feb 2026 15:38:23 GMT, David Beaumont <[email protected]> wrote:

>> Allow users of Toolbox.MemoryFileManager to specify if the delegate file 
>> manager should also be closed when it is closed.
>> 
>> This fixes a use-after-close bug in TestOriginatingElements, where the 
>> system file manager and wrapping memory file manager have different, nested, 
>> lifetimes resulting in an early call to close the system file manager when 
>> the wrapper is closed, causing subsequent legitimate use of the system file 
>> manager to fail.
>> 
>> This wasn't noticed before now since the system file manager was using the 
>> singleton JRT file-system in which "close" does nothing. Now it's using a 
>> properly scoped instance of the JRT file-system which can be closed.
>
> David Beaumont has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains eight additional 
> commits since the last revision:
> 
>  - revert forwarding file manager
>  - Remove extraneous problem list entry
>  - Reworking to simplify
>    
>    * Problem list
>    * temp commit
>    * add @since for new method
>    * tidy and restore eagerly removed not-actually-dead code
>    * Allow callers to decide if delgate file manager should be closed
>  - Merge branch 'lworld' into jdk_8373825_ffm/squashed
>  - add @since for new method
>  - undo reformatting
>  - tidy and restore eagerly removed not-actually-dead code
>  - Allow callers to decide if delgate file manager should be closed

test/langtools/tools/javac/processing/filer/TestOriginatingElements.java line 
182:

> 180:     }
> 181: 
> 182:     static JavaFileManager capturingFileManager(JavaFileManager sjfm, 
> List<String> testOutput) {

It was quite unreadable having the test fixture created inline, with no 
indication of its purpose, so I pulled it out to make it clearer that it's not 
actually the code under test. The diff looks large but it's just code being 
moved.

test/langtools/tools/javac/processing/filer/TestOriginatingElements.java line 
219:

> 217:             }
> 218: 
> 219:             @Override

This is the important part, not forwarding the close() call.

-------------

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/1810#discussion_r2775708234
PR Review Comment: 
https://git.openjdk.org/valhalla/pull/1810#discussion_r2775713018

Reply via email to