From befa3aa63c7570b88c422c2cc6cfdc42d42155d7 Mon Sep 17 00:00:00 2001 From: chrox Date: Mon, 10 Nov 2014 20:21:25 +0800 Subject: [PATCH] normalize version when checking packages in OTA manager This fixes a bug that version 987 was treated newer than version 1010. --- frontend/ui/otamanager.lua | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/frontend/ui/otamanager.lua b/frontend/ui/otamanager.lua index 571f5a5f0..bdad9a5c0 100644 --- a/frontend/ui/otamanager.lua +++ b/frontend/ui/otamanager.lua @@ -77,14 +77,25 @@ function OTAManager:checkUpdate() end zsync:close() end - local local_version = io.open("git-rev", "r"):read() - local ota_version = nil - if ota_package then - ota_version = ota_package:match(".-(v%d.-)%.tar") + local normalized_version = function(rev) + local version = rev:match("(v%d.-)-g"):gsub("[^%d]", "") + return tonumber(version) end + local local_ok, local_version = pcall(function() + local rev_file = io.open("git-rev", "r") + if rev_file then + local rev = rev_file:read() + rev_file:close() + return normalized_version(rev) + end + end) + local ota_ok, ota_version = pcall(function() + return normalized_version(ota_package) + end) -- return ota package version if package on OTA server has version -- larger than the local package version - if ota_version and ota_version > local_version then + if local_ok and ota_ok and ota_version and local_version and + ota_version > local_version then return ota_version elseif ota_version and ota_version == local_version then return 0