Loading libutils/RefBase.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -149,8 +149,8 @@ namespace android { // Same for weak counts. #define BAD_WEAK(c) ((c) == 0 || ((c) & (~MAX_COUNT)) != 0) // see utils/StrongPointer.h - declared there for legacy reasons void sp_report_stack_pointer(); // name kept because prebuilts used to use it from inlining sp<> code void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("RefBase used with stack pointer argument"); } // Check whether address is definitely on the calling stack. We actually check whether it is on // the same 4K page as the frame pointer. Loading libutils/RefBase_test.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -275,6 +275,11 @@ TEST(RefBase, DoubleOwnershipDeath) { EXPECT_FALSE(isDeleted); } TEST(RefBase, StackOwnershipDeath) { bool isDeleted; EXPECT_DEATH({ Foo foo(&isDeleted); foo.incStrong(nullptr); }, ""); } // Set up a situation in which we race with visit2AndRremove() to delete // 2 strong references. Bar destructor checks that there are no early // deletions and prior updates are visible to destructor. Loading libutils/StrongPointer.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -21,7 +21,4 @@ namespace android { void sp_report_race() { LOG_ALWAYS_FATAL("sp<> assignment detected data race"); } void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("sp<> constructed with stack pointer argument"); } } libutils/include/utils/StrongPointer.h +0 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ COMPARE_STRONG_FUNCTIONAL(>=, std::greater_equal) // For code size reasons, we do not want these inlined or templated. void sp_report_race(); void sp_report_stack_pointer(); // --------------------------------------------------------------------------- // No user serviceable parts below here. Loading Loading
libutils/RefBase.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -149,8 +149,8 @@ namespace android { // Same for weak counts. #define BAD_WEAK(c) ((c) == 0 || ((c) & (~MAX_COUNT)) != 0) // see utils/StrongPointer.h - declared there for legacy reasons void sp_report_stack_pointer(); // name kept because prebuilts used to use it from inlining sp<> code void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("RefBase used with stack pointer argument"); } // Check whether address is definitely on the calling stack. We actually check whether it is on // the same 4K page as the frame pointer. Loading
libutils/RefBase_test.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -275,6 +275,11 @@ TEST(RefBase, DoubleOwnershipDeath) { EXPECT_FALSE(isDeleted); } TEST(RefBase, StackOwnershipDeath) { bool isDeleted; EXPECT_DEATH({ Foo foo(&isDeleted); foo.incStrong(nullptr); }, ""); } // Set up a situation in which we race with visit2AndRremove() to delete // 2 strong references. Bar destructor checks that there are no early // deletions and prior updates are visible to destructor. Loading
libutils/StrongPointer.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -21,7 +21,4 @@ namespace android { void sp_report_race() { LOG_ALWAYS_FATAL("sp<> assignment detected data race"); } void sp_report_stack_pointer() { LOG_ALWAYS_FATAL("sp<> constructed with stack pointer argument"); } }
libutils/include/utils/StrongPointer.h +0 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,6 @@ COMPARE_STRONG_FUNCTIONAL(>=, std::greater_equal) // For code size reasons, we do not want these inlined or templated. void sp_report_race(); void sp_report_stack_pointer(); // --------------------------------------------------------------------------- // No user serviceable parts below here. Loading