summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-07-07 18:02:08 +0100
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-07-07 22:06:32 +0100
commitcf541c8537d5a262c0f16f30d8a74354be969e7c (patch)
tree56155b39a66335ac825149b0a4ba91e7ae1a36cf
parenteb45a8607debf02d40e235f2ee8445151e7fb9f1 (diff)
downloadandroid_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.cpp4
-rw-r--r--wilhelm/src/itf/IAndroidEffectCapabilities.c6
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);