Commit ee7465a
This PR cherry-picks changes from the original PR #25005 to branch 25.2.
---
#### Original PR description
> ElementEffect registered a new detach listener on every attach, stored
it in the single detachRegistration field, and relied on each detach
listener removing itself. When an element is re-attached without a
detach event firing in between - StateNode.removeFromTree(false), as
used by UIInternals.moveToNewUI for `@PreserveOnRefresh` - a second
detach listener was registered while the first was still present. The
next real detach ran both: the first nulled detachRegistration, the
second dereferenced null and threw a NullPointerException.
>
> Register the detach listener through a helper that removes any
previous registration before adding a new one, and null-guard the
removal inside the listener so at most one detach listener is ever
active.
>
> Fixes #24973
Co-authored-by: Marco Collovati <marco@vaadin.com>
1 parent f3535cc commit ee7465a
2 files changed
Lines changed: 70 additions & 8 deletions
File tree
- flow-server/src
- main/java/com/vaadin/flow/dom
- test/java/com/vaadin/flow/dom
Lines changed: 26 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
| 90 | + | |
95 | 91 | | |
96 | 92 | | |
97 | 93 | | |
| |||
106 | 102 | | |
107 | 103 | | |
108 | 104 | | |
109 | | - | |
110 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
111 | 129 | | |
112 | 130 | | |
113 | | - | |
| 131 | + | |
114 | 132 | | |
115 | 133 | | |
116 | 134 | | |
| |||
Lines changed: 44 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
| |||
630 | 631 | | |
631 | 632 | | |
632 | 633 | | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
633 | 677 | | |
634 | 678 | | |
635 | 679 | | |
| |||
0 commit comments