diff --git a/src/detection/monitor/monitor_linux.c b/src/detection/monitor/monitor_linux.c index a04276412..5c72304fa 100644 --- a/src/detection/monitor/monitor_linux.c +++ b/src/detection/monitor/monitor_linux.c @@ -3,7 +3,6 @@ #include "common/io/io.h" #include "util/edidHelper.h" #include "util/stringUtils.h" -#include "util/mallocHelper.h" #include #include @@ -30,15 +29,9 @@ const char* ffDetectMonitor(FFlist* results) ffStrbufAppendS(&drmDir, entry->d_name); ffStrbufAppendS(&drmDir, "/edid"); - struct stat fileStat; - if (stat(drmDir.chars, &fileStat) < 0 || fileStat.st_size == 0 || fileStat.st_size % 128 != 0) - { - ffStrbufSubstrBefore(&drmDir, drmDirLength); - continue; - } - - FF_AUTO_FREE uint8_t* edidData = malloc((size_t) fileStat.st_size); - if(ffReadFileData(drmDir.chars, sizeof(edidData), edidData) != sizeof(edidData)) + uint8_t edidData[512]; + ssize_t edidLength = ffReadFileData(drmDir.chars, sizeof(edidData), edidData); + if(edidLength <= 0 || edidLength % 128 != 0) { ffStrbufSubstrBefore(&drmDir, drmDirLength); continue; @@ -54,7 +47,7 @@ const char* ffDetectMonitor(FFlist* results) ffStrbufInit(&display->name); ffEdidGetName(edidData, &display->name); ffEdidGetPhysicalSize(edidData, &display->physicalWidth, &display->physicalHeight); - display->hdrCompatible = ffEdidGetHdrCompatible(edidData, (uint32_t) fileStat.st_size); + display->hdrCompatible = ffEdidGetHdrCompatible(edidData, (uint32_t) edidLength); } ffStrbufSubstrBefore(&drmDir, drmDirLength);