summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanikoyes <sanikoyes@163.com>2016-05-03 17:25:33 +0800
committersanikoyes <sanikoyes@163.com>2016-05-03 17:25:33 +0800
commitc824781e9808bf1edb6b3fd963dda32eda5bf7ab (patch)
treeb01989e4d8c5b8fb332369befb2cfaa6597e9531
parent4e23ba5f37e21021c47e3aecf544afc9485e311b (diff)
Fix crash in dynamic font
-rw-r--r--scene/resources/dynamic_font.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index b9fd67bc2f..19aa0e79cc 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -261,6 +261,8 @@ void DynamicFontAtSize::_update_char(CharType p_char) {
if (tex_index==-1) {
//could not find texture to fit, create one
+ tex_x = 0;
+ tex_y = 0;
int texsize = MAX(size*8,256);
if (mw>texsize)
@@ -280,6 +282,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) {
{
//zero texture
DVector<uint8_t>::Write w = tex.imgdata.write();
+ ERR_FAIL_COND(texsize*texsize*2 > tex.imgdata.size());
for(int i=0;i<texsize*texsize*2;i++) {
w[i]=0;
}
@@ -305,6 +308,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) {
for(int j=0;j<w;j++) {
int ofs = ( (i+tex_y+rect_margin)*tex.texture_size+j+tex_x+rect_margin)*2;
+ ERR_FAIL_COND(ofs >= tex.imgdata.size());
wr[ofs+0]=255; //grayscale as 1
wr[ofs+1]=cpbitmap[i*w+j]; //alpha as 0
}