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