From 51d5835942b1acbabf6dbc80b5d6ed571cecd418 Mon Sep 17 00:00:00 2001 From: Ariya Hidayat Date: Tue, 23 Sep 2014 07:51:36 -0700 Subject: [PATCH] System#os.version workaround for new(er) OS X versions. In case Qt doesn't provide the information yet, deduce it from the OS kernel version (e.g. 14.x.y for OS 10.10 Yosemite). https://github.com/ariya/phantomjs/issues/12579 --- src/system.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/system.cpp b/src/system.cpp index 184428c1..a3b97be4 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -108,7 +108,16 @@ System::System(QObject *parent) : } #elif defined(Q_OS_MAC) m_os.insert("name", "mac"); - m_os.insert("release", getOSRelease()); + + QString osRelease = getOSRelease(); + m_os.insert("release", osRelease); + + int kernelVersionMajor = 0; + QStringList releaseParts = osRelease.split('.'); + if (releaseParts.length() == 3) { + kernelVersionMajor = releaseParts[0].toInt(); + } + switch (QSysInfo::MacintoshVersion) { case QSysInfo::MV_10_3: m_os.insert("version", "10.3 (Panther)"); @@ -132,7 +141,17 @@ System::System(QObject *parent) : m_os.insert("version", "10.9 (Mavericks)"); break; default: - m_os.insert("version", "unknown"); + // Deduce OS X version from the kernel version. + // This is only used for version not yet recognized by Qt + // (there is no associated QSysInfo::MV_ enum). + switch (kernelVersionMajor) { + case 14: + m_os.insert("version", "10.10 (Yosemite)"); + break; + default: + m_os.insert("version", "unknown"); + break; + } break; } #elif defined(Q_OS_LINUX)