diff --git a/buildscripts/CMakeLists.txt b/buildscripts/CMakeLists.txt index d496c09fa..bde9751ae 100644 --- a/buildscripts/CMakeLists.txt +++ b/buildscripts/CMakeLists.txt @@ -484,6 +484,7 @@ set(OPENMW_PATCH patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/0009-windowmanagerimp-always-show-mouse-when-possible-pat.patch && patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/0010-android-fix-context-being-lost-on-app-minimize.patch && patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/0014-settingswindow-save-user-settings-file-when-ok-is-pr.patch && + patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/0012-components-misc-stringops-use-boost-format-instead-o.patch && patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/fix-build.patch && patch -d -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/refraction-fix.patch && cp ${CMAKE_SOURCE_DIR}/patches/openmw/android_main.cpp /apps/openmw/android_main.cpp diff --git a/buildscripts/patches/openmw/0012-components-misc-stringops-use-boost-format-instead-o.patch b/buildscripts/patches/openmw/0012-components-misc-stringops-use-boost-format-instead-o.patch new file mode 100644 index 000000000..92479ff7e --- /dev/null +++ b/buildscripts/patches/openmw/0012-components-misc-stringops-use-boost-format-instead-o.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ilya Zhuravlev +Date: Tue, 23 Feb 2021 11:52:20 -0500 +Subject: [PATCH] components/misc/stringops: use boost format instead of + snprintf + +snprintf randomly returns -1 on android +--- + components/misc/stringops.hpp | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/components/misc/stringops.hpp b/components/misc/stringops.hpp +index 086352235..52d54acb8 100644 +--- a/components/misc/stringops.hpp ++++ b/components/misc/stringops.hpp +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + + #include "utf8stream.hpp" + +@@ -250,13 +251,7 @@ public: + template + static std::string format(const char* fmt, Args const & ... args) + { +- auto size = std::snprintf(nullptr, 0, fmt, argument(args) ...); +- // Note: sprintf also writes a trailing null character. We should remove it. +- std::string ret(size+1, '\0'); +- std::sprintf(&ret[0], fmt, argument(args) ...); +- ret.erase(size); +- +- return ret; ++ return boost::str((boost::format(fmt) % ... % args)); + } + + template