diff options
author | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2011-12-08 14:42:13 +0059 |
---|---|---|
committer | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2011-12-18 17:37:06 +0059 |
commit | a0a1d83c28b77889ae9214852acaae9f00998dd4 (patch) | |
tree | 5e3dac2daba031e05ae47511c1065c0815aa3daa | |
parent | 94b66c366a6e74000cdee1dfd77d713a6ca9aa93 (diff) | |
download | base-a0a1d83c28b77889ae9214852acaae9f00998dd4.tar.gz |
frameworks/base: Fix aliasing violations
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r-- | include/binder/Binder.h | 5 | ||||
-rw-r--r-- | libs/binder/Binder.cpp | 2 | ||||
-rw-r--r-- | libs/utils/ResourceTypes.cpp | 4 |
3 files changed, 8 insertions, 3 deletions
diff --git a/include/binder/Binder.h b/include/binder/Binder.h index ba3ac4b99074..0a01828ce2da 100644 --- a/include/binder/Binder.h +++ b/include/binder/Binder.h @@ -69,7 +69,10 @@ private: class Extras; - Extras* mExtras; + union { + Extras* mExtras; + volatile int32_t mExtrasInt; + }; void* mReserved0; }; diff --git a/libs/binder/Binder.cpp b/libs/binder/Binder.cpp index 9945f9188f52..3517f8f523e7 100644 --- a/libs/binder/Binder.cpp +++ b/libs/binder/Binder.cpp @@ -142,7 +142,7 @@ void BBinder::attachObject( if (!e) { e = new Extras; if (android_atomic_cmpxchg(0, reinterpret_cast<int32_t>(e), - reinterpret_cast<volatile int32_t*>(&mExtras)) != 0) { + &mExtrasInt) != 0) { delete e; e = mExtras; } diff --git a/libs/utils/ResourceTypes.cpp b/libs/utils/ResourceTypes.cpp index 37c98747d4ed..d9bfa4a53eba 100644 --- a/libs/utils/ResourceTypes.cpp +++ b/libs/utils/ResourceTypes.cpp @@ -4540,7 +4540,9 @@ void ResTable::print_value(const Package* pkg, const Res_value& value) const } } } else if (value.dataType == Res_value::TYPE_FLOAT) { - printf("(float) %g\n", *(const float*)&value.data); + float f; + memcpy(&f, &value.data, sizeof(float)); + printf("(float) %g\n", f); } else if (value.dataType == Res_value::TYPE_DIMENSION) { printf("(dimension) "); print_complex(value.data, false); |