From 55faa23d2e903cf7527ff58da152cbbc29bf260b Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Wed, 26 Jul 2017 15:09:58 +0300 Subject: [Qt] Fix database timeout not being set correctly It was overflowing due to long to int conversion inside Qt and never being effectively set because Qt was silently ignoring the conversion error and discarding the new value. Fixes #9108. --- platform/qt/src/sqlite3.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp index 6ed55c541f..0cd78d85ce 100644 --- a/platform/qt/src/sqlite3.cpp +++ b/platform/qt/src/sqlite3.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -141,7 +142,11 @@ Database::~Database() { void Database::setBusyTimeout(std::chrono::milliseconds timeout) { assert(impl); - std::string timeoutStr = mbgl::util::toString(timeout.count()); + + // std::chrono::milliseconds.count() is a long and Qt will cast + // internally to int, so we need to make sure the limits apply. + std::string timeoutStr = mbgl::util::toString(timeout.count() & INT_MAX); + QString connectOptions = impl->db->connectOptions(); if (connectOptions.isEmpty()) { if (!connectOptions.isEmpty()) connectOptions.append(';'); -- cgit v1.2.1