summaryrefslogtreecommitdiff
path: root/src/gui/truetypefont.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/truetypefont.cpp')
-rw-r--r--src/gui/truetypefont.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/gui/truetypefont.cpp b/src/gui/truetypefont.cpp
index 167a66b2..adb49780 100644
--- a/src/gui/truetypefont.cpp
+++ b/src/gui/truetypefont.cpp
@@ -26,13 +26,22 @@
#include "resources/image.h"
-#include "utils/stringutils.h"
-
#include <guichan/color.hpp>
#include <guichan/exception.hpp>
const unsigned int CACHE_SIZE = 256;
+static const char *getSafeUtf8String(const std::string &text)
+{
+ static int UTF8_MAX_SIZE = 10;
+
+ static char buf[4096];
+ const int len = std::min(text.size(), sizeof(buf) - UTF8_MAX_SIZE);
+ memcpy(buf, text.c_str(), len);
+ memset(buf + len, 0, UTF8_MAX_SIZE);
+ return buf;
+}
+
class TextChunk
{
public:
@@ -62,7 +71,6 @@ class TextChunk
const char *str = getSafeUtf8String(text);
SDL_Surface *surface = TTF_RenderUTF8_Blended(
font, str, sdlCol);
- delete[] str;
if (!surface)
{
@@ -180,7 +188,6 @@ int TrueTypeFont::getWidth(const std::string &text) const
int w, h;
const char *str = getSafeUtf8String(text);
TTF_SizeUTF8(mFont, str, &w, &h);
- delete[] str;
return w;
}