From 8f164fe847fad45e05c3bb28e61d906d92779bd4 Mon Sep 17 00:00:00 2001 From: Gloria Wang Date: Mon, 1 Aug 2011 14:01:29 -0700 Subject: [PATCH] Fix ordering assumption of argument evaluation. No specific order is specified in the C++ standard, but the order of the calls to Parcel read commands matters. Move any calls with multiple reads to local variables. Fix for bug 5104979. Change-Id: I709aa040e990d2659e7a3a089f7a42ae812de9ff --- media/libmedia/IMediaPlayer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/media/libmedia/IMediaPlayer.cpp b/media/libmedia/IMediaPlayer.cpp index 76a8a91cc7c97..52885d2e57b2d 100644 --- a/media/libmedia/IMediaPlayer.cpp +++ b/media/libmedia/IMediaPlayer.cpp @@ -352,7 +352,9 @@ status_t BnMediaPlayer::onTransact( } break; case SET_VOLUME: { CHECK_INTERFACE(IMediaPlayer, data, reply); - reply->writeInt32(setVolume(data.readFloat(), data.readFloat())); + float leftVolume = data.readFloat(); + float rightVolume = data.readFloat(); + reply->writeInt32(setVolume(leftVolume, rightVolume)); return NO_ERROR; } break; case INVOKE: { @@ -367,7 +369,9 @@ status_t BnMediaPlayer::onTransact( } break; case GET_METADATA: { CHECK_INTERFACE(IMediaPlayer, data, reply); - const status_t retcode = getMetadata(data.readInt32(), data.readInt32(), reply); + bool update_only = static_cast(data.readInt32()); + bool apply_filter = static_cast(data.readInt32()); + const status_t retcode = getMetadata(update_only, apply_filter, reply); reply->setDataPosition(0); reply->writeInt32(retcode); reply->setDataPosition(0);