diff options
author | sanikoyes <sanikoyes@163.com> | 2016-05-03 17:25:33 +0800 |
---|---|---|
committer | sanikoyes <sanikoyes@163.com> | 2016-05-03 17:25:33 +0800 |
commit | c824781e9808bf1edb6b3fd963dda32eda5bf7ab (patch) | |
tree | b01989e4d8c5b8fb332369befb2cfaa6597e9531 | |
parent | 4e23ba5f37e21021c47e3aecf544afc9485e311b (diff) |
Fix crash in dynamic font
-rw-r--r-- | scene/resources/dynamic_font.cpp | 4 |
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 } |