Revert "Revert "Fix wp and sp comparison bugs""
Fix wp and sp comparison bugs Make clear() actually clear wp m_refs, so that nulls compare equal. Make equality consistent with < and >, ensuring that a weak pointer cannot be both equal to and greater than another. Don't rely on the built-in < and > operators to correctly order different objects. The standard does not guarantee that, and there is a risk of compiler relying on that lack of guarantee. Remove unnecessary comparison overloads, especially those comparing a wp<> to an sp<>. Change the remaining wp<> to sp<> comparisons to check for equivalence of the mRefs pointer instead of the object address, thus eliminating the dubious equal comparison result for a dead wp<> and an sp<> that happen to point to the same object address. Add comparison tests. This reverts commit a2a2ad80. The original code, and my original CL, both failed to initialize m_refs in various wp<> constructors. This now became more important, since comparisons now rely more on m_refs. However I believe it was always a bug, since some comparisons always relied on m_refs. Test: Treehugger, boot AOSP, atest RefBase Bug: 126922090 This reverts commit a2a2ad80. Reason for revert: Reapply after constructor fixes. Change-Id: I2c8917416a2306e36d2b6bb7b397f653020e5688
Loading
Please register or sign in to comment