Details
-
Task
-
Resolution: Unresolved
-
P2: Important
-
None
-
None
-
None
-
8
-
3a284dc19 (dev), 605a20b26 (6.9), 4299115fe (6.8), e1efc67bc (tqtc/lts-6.5), 162015e9c (dev), eb13efc4a (6.9), eb10876c7 (6.8), 027e80bfd (tqtc/lts-6.5)
Description
After we've detected that we need to change the container in remove()/erase(), don't detach(). Instead, check if we're shared. If we're not shared, do the change in-place. If we are shared, make a new container, copy only the subset that forms the final result over, then assign the new container to *this.
See epic for more details.
Acceptance criteria: The following member functions no longer detach:
- clear()
- erase() (all overloads, cf. QTBUG-106180)
- intersect()
- remove()
- subtract()
- unite()
Attachments
Issue Links
- depends on
-
QTBUG-106174 Q(Multi)Hash: don't detach in remove()/erase()
-
- Open
-
Gerrit Reviews
For Gerrit Dashboard: QTBUG-106179 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
614770,15 | Unbreak QSet::intersect() | dev | qt/qtbase | Status: MERGED | +2 | 0 |
616880,9 | QSet: don't detach in remove()/removeIf() if nothing is being removed | dev | qt/qtbase | Status: MERGED | +2 | 0 |
621693,2 | QSet: don't detach in remove()/removeIf() if nothing is being removed | 6.9 | qt/qtbase | Status: MERGED | +2 | 0 |
621730,2 | QSet: don't detach in remove()/removeIf() if nothing is being removed | 6.8 | qt/qtbase | Status: MERGED | +2 | 0 |
621825,2 | QSet: don't detach in remove()/removeIf() if nothing is being removed | tqtc/lts-6.5 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |
622403,3 | Unbreak QSet::intersect() | 6.9 | qt/qtbase | Status: MERGED | +2 | 0 |
622696,2 | Unbreak QSet::intersect() | 6.8 | qt/qtbase | Status: MERGED | +2 | 0 |
622738,3 | Unbreak QSet::intersect() | tqtc/lts-6.5 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |