Merge "Make assignment of mPlugin members consistent"
diff --git a/drm/libmediadrm/DrmHal.cpp b/drm/libmediadrm/DrmHal.cpp
index 14ff493..66c509f 100644
--- a/drm/libmediadrm/DrmHal.cpp
+++ b/drm/libmediadrm/DrmHal.cpp
@@ -553,12 +553,14 @@
const String8& appPackageName) {
Mutex::Autolock autoLock(mLock);
- for (size_t i = 0; i < mFactories.size(); i++) {
+ for (size_t i = mFactories.size() - 1; i >= 0; i--) {
if (mFactories[i]->isCryptoSchemeSupported(uuid)) {
- mPlugin = makeDrmPlugin(mFactories[i], uuid, appPackageName);
- if (mPlugin != NULL) {
+ auto plugin = makeDrmPlugin(mFactories[i], uuid, appPackageName);
+ if (plugin != NULL) {
+ mPlugin = plugin;
mPluginV1_1 = drm::V1_1::IDrmPlugin::castFrom(mPlugin);
mPluginV1_2 = drm::V1_2::IDrmPlugin::castFrom(mPlugin);
+ break;
}
}
}
@@ -567,6 +569,9 @@
mInitCheck = ERROR_UNSUPPORTED;
} else {
if (!mPlugin->setListener(this).isOk()) {
+ mPlugin = NULL;
+ mPluginV1_1 = NULL;
+ mPluginV1_2 = NULL;
mInitCheck = DEAD_OBJECT;
} else {
mInitCheck = OK;