> When a Stage is closed while processing an OS message the glass peer object > is deleted immediately even if it's still executing member functions. As > glass unwinds the stack and executes cleanup code it's referencing freed > memory. > > There are cases where glass generates JavaFX events back-to-back. For > example, when handling the Delete key glass sends a PRESSED and TYPED event > in the same routine. If the Stage is closed during the PRESSED event the code > that sends the TYPED event is running inside an object that has already been > deleted. > > When the Stage is closed glass calls the OS routine ::DestroyWindow on the > HWND causing a WM_NCDESTROY message to be sent. Currently the BaseWnd object > is deleted when processing this message. This PR defers the destruction until > all messages have been processed. This is the same approach used in the Linux > code.
Martin Fox has updated the pull request incrementally with one additional commit since the last revision: Updated to match existing naming conventions ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1309/files - new: https://git.openjdk.org/jfx/pull/1309/files/0eb0f985..eaae9963 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1309&range=01 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1309&range=00-01 Stats: 9 lines in 2 files changed: 0 ins; 0 del; 9 mod Patch: https://git.openjdk.org/jfx/pull/1309.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1309/head:pull/1309 PR: https://git.openjdk.org/jfx/pull/1309