diff --git a/libexternal/external.cpp b/libexternal/external.cpp
index 89d63e9..609f9c1 100644
--- a/libexternal/external.cpp
+++ b/libexternal/external.cpp
@@ -301,34 +301,37 @@
 
     int hdmiEDIDFile = open(sysFsEDIDFilePath, O_RDONLY, 0);
     int len = -1;
+    char edidStr[128] = {'\0'};
 
     if (hdmiEDIDFile < 0) {
         ALOGE("%s: edid_modes file '%s' not found",
                  __FUNCTION__, sysFsEDIDFilePath);
         return false;
     } else {
-        len = read(hdmiEDIDFile, mEDIDs, sizeof(mEDIDs)-1);
+        len = read(hdmiEDIDFile, edidStr, sizeof(edidStr)-1);
         ALOGD_IF(DEBUG, "%s: EDID string: %s length = %d",
-                 __FUNCTION__, mEDIDs, len);
+                 __FUNCTION__, edidStr, len);
         if ( len <= 0) {
             ALOGE("%s: edid_modes file empty '%s'",
                      __FUNCTION__, sysFsEDIDFilePath);
+            edidStr[0] = '\0';
         }
         else {
-            while (len > 1 && isspace(mEDIDs[len-1]))
+            while (len > 1 && isspace(edidStr[len-1])) {
                 --len;
-            mEDIDs[len] = 0;
+            }
+            edidStr[len] = '\0';
         }
     }
     close(hdmiEDIDFile);
     if(len > 0) {
         // Get EDID modes from the EDID strings
-        mModeCount = parseResolution(mEDIDs, mEDIDModes);
+        mModeCount = parseResolution(edidStr, mEDIDModes);
         ALOGD_IF(DEBUG, "%s: mModeCount = %d", __FUNCTION__,
                  mModeCount);
     }
 
-    return (strlen(mEDIDs) > 0);
+    return (len > 0);
 }
 
 bool ExternalDisplay::openFrameBuffer()
@@ -359,7 +362,6 @@
 void ExternalDisplay::resetInfo()
 {
     memset(&mVInfo, 0, sizeof(mVInfo));
-    memset(mEDIDs, 0, sizeof(mEDIDs));
     memset(mEDIDModes, 0, sizeof(mEDIDModes));
     mModeCount = 0;
     mCurrentMode = -1;
