UITextField设置长度限制的bug

引擎版本:cocos2d-x 3.0

UITextField若设置了长度限制以后使用setText设置中文字符可能导致程序崩溃。

重现方式:
UITextField控件设置长度限制5,通过setText设置中文字符 “一二三” 两次,则第二次就会出错。

经查看代码TextField::setText(const std::string& text)里面的

int text_count = _calcCharCount(text.c_str());
int total = text_count + _calcCharCount(getStringValue().c_str());

这两句对于长度的计算有误,text为设置的字符串,那长度total应该就是text_count才对,为什么还要加上原有字符的长度,这里是字符串替换又不是连接。
然后下面读取字符又是从text里读取,就导致下标越界了。

这个bug太2了。