diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-07-07 18:02:08 +0100 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-07-07 22:06:32 +0100 |
commit | cf541c8537d5a262c0f16f30d8a74354be969e7c (patch) | |
tree | 56155b39a66335ac825149b0a4ba91e7ae1a36cf | |
parent | eb45a8607debf02d40e235f2ee8445151e7fb9f1 (diff) | |
download | android_system_media-ics.tar.gz android_system_media-ics.tar.bz2 android_system_media-ics.zip |
wilhelm: Fix pointer mis-assignmentsics
Change "wilhelm: fix aliasing violations" (commit
582fd62cfcb504adf66721e922a0637e887b0d31 in the original tree)
wrongly converted a pointer assignment in
IAndroidEffectCapabilities_QueryEffect from type to content, breaking
OpenSLES in the process (as detected by CM users who tried to
use visual voicemail).
It also broke stream metadata detection with a bad conversion
at android_audioPlayer_metadata_getValue() (data was already
a pointer).
Change-Id: I99cb6e123ea3de13b5b455e046c0db18e39b7a50
Signed-off-by: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
-rw-r--r-- | wilhelm/src/android/AudioPlayer_to_android.cpp | 4 | ||||
-rw-r--r-- | wilhelm/src/itf/IAndroidEffectCapabilities.c | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/wilhelm/src/android/AudioPlayer_to_android.cpp b/wilhelm/src/android/AudioPlayer_to_android.cpp index bbb0b271..315ff2ce 100644 --- a/wilhelm/src/android/AudioPlayer_to_android.cpp +++ b/wilhelm/src/android/AudioPlayer_to_android.cpp @@ -1846,7 +1846,7 @@ SLresult android_audioPlayer_metadata_getValue(CAudioPlayer *ap, memcpy((char *) pValue->langCountry, "en", 3); // applicable here? SLuint32 valueData; SLuint32 valueSize = 0; - memcpy(&valueData, &pValue->data, sizeof(SLuint32)); + memcpy(&valueData, pValue->data, sizeof(SLuint32)); if ((size < sizeof(SLMetadataInfo) || (!decoder->getPcmFormatValueSize(index, &valueSize)) || (!decoder->getPcmFormatKeyValue(index, size - sizeof(SLMetadataInfo), @@ -1854,7 +1854,7 @@ SLresult android_audioPlayer_metadata_getValue(CAudioPlayer *ap, res = SL_RESULT_PARAMETER_INVALID; } else { pValue->size = valueSize; - memcpy(&pValue->data, &valueData, sizeof(pValue->data)); + memcpy(pValue->data, &valueData, sizeof(SLuint32)); } } break; diff --git a/wilhelm/src/itf/IAndroidEffectCapabilities.c b/wilhelm/src/itf/IAndroidEffectCapabilities.c index 29ef53dc..7aef8fab 100644 --- a/wilhelm/src/itf/IAndroidEffectCapabilities.c +++ b/wilhelm/src/itf/IAndroidEffectCapabilities.c @@ -52,10 +52,12 @@ static SLresult IAndroidEffectCapabilities_QueryEffect(SLAndroidEffectCapabiliti } else { interface_lock_shared(thiz); if (NULL != pEffectType) { - memcpy(pEffectType, &thiz->mFxDescriptors[index].type, sizeof(SLInterfaceID)); + effect_uuid_t *tmpslid = &thiz->mFxDescriptors[index].type; + memcpy(pEffectType, &tmpslid, sizeof(SLInterfaceID)); } if (NULL != pEffectImplementation) { - memcpy(pEffectImplementation, &thiz->mFxDescriptors[index].uuid, sizeof(SLInterfaceID)); + effect_uuid_t *tmpslid = &thiz->mFxDescriptors[index].uuid; + memcpy(pEffectImplementation, &tmpslid, sizeof(SLInterfaceID)); } if ((NULL != pName) && (0 < *pNameSize)) { int len = strlen(thiz->mFxDescriptors[index].name); |