summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-11-12 12:12:01 +0100
committerKonstantin Käfer <mail@kkaefer.com>2014-11-12 12:12:01 +0100
commit27cf24171a014b63e139e7fc77422753beac44e1 (patch)
tree00f020584a077636e1c5d7793a3da59ed976547c /platform
parentf4cc85340eb4285729018df61fffd39418756087 (diff)
downloadqtlocation-mapboxgl-27cf24171a014b63e139e7fc77422753beac44e1.tar.gz
check library versions against header symbols in static initialization function
fixes #580
Diffstat (limited to 'platform')
-rw-r--r--platform/default/http_request_baton_curl.cpp15
-rw-r--r--platform/default/image.cpp14
2 files changed, 29 insertions, 0 deletions
diff --git a/platform/default/http_request_baton_curl.cpp b/platform/default/http_request_baton_curl.cpp
index b8b4bac5fd..02e9497c9e 100644
--- a/platform/default/http_request_baton_curl.cpp
+++ b/platform/default/http_request_baton_curl.cpp
@@ -1,6 +1,7 @@
#include <mbgl/storage/http_request_baton.hpp>
#include <mbgl/util/uv-messenger.h>
#include <mbgl/util/time.hpp>
+#include <mbgl/util/string.hpp>
#include <uv.h>
#include <curl/curl.h>
@@ -9,6 +10,20 @@
#include <cassert>
#include <cstring>
+
+// Check curl library version.
+const static bool curl_version_check = []() {
+ const auto version = curl_version_info(CURLVERSION_NOW);
+ if (version->version_num != LIBCURL_VERSION_NUM) {
+ throw std::runtime_error(mbgl::util::sprintf<96>(
+ "libcurl version mismatch: headers report %d.%d.%d, but library reports %d.%d.%d",
+ (LIBCURL_VERSION_NUM >> 16) & 0xFF, (LIBCURL_VERSION_NUM >> 8) & 0xFF, LIBCURL_VERSION_NUM & 0xFF,
+ (version->version_num >> 16) & 0xFF, (version->version_num >> 8) & 0xFF, version->version_num & 0xFF));
+ }
+ return true;
+}();
+
+
// This file contains code from http://curl.haxx.se/libcurl/c/multi-uv.html:
/***************************************************************************
diff --git a/platform/default/image.cpp b/platform/default/image.cpp
index 68d1786913..bf119fee05 100644
--- a/platform/default/image.cpp
+++ b/platform/default/image.cpp
@@ -1,4 +1,5 @@
#include <mbgl/util/image.hpp>
+#include <mbgl/util/string.hpp>
#include <png.h>
@@ -8,6 +9,19 @@
#include <cstring>
+// Check png library version.
+const static bool png_version_check = []() {
+ const png_uint_32 version = png_access_version_number();
+ if (version != PNG_LIBPNG_VER) {
+ throw std::runtime_error(mbgl::util::sprintf<96>(
+ "libpng version mismatch: headers report %d.%d.%d, but library reports %d.%d.%d",
+ PNG_LIBPNG_VER / 10000, (PNG_LIBPNG_VER / 100) % 100, PNG_LIBPNG_VER % 100,
+ version / 10000, (version / 100) % 100, version % 100));
+ }
+ return true;
+}();
+
+
namespace mbgl {
namespace util {