ftint32 fto_match_symbol( fto_task_info *task_info,
ftuint16 input,
ftuint16 symbol)
{
ftuint16 * symbols =
task_info->keymap.symbol_strings +
task_info->keymap.indexes[FT_KEY_2_INDEX(input)] ;
ftuint16 * p_symbol = ft_wcschr(symbols, symbol) ;
if(p_symbol == NULL)
{
return FT_FAIL ;
}
if((p_symbol - symbols) >= task_info->keymap.accurate_lens[FT_KEY_2_INDEX(input)])
{
return 1 ;
}
return FT_OK ;
}
执行这个函数时程序挂在
if((p_symbol - symbols) >= task_info->keymap.accurate_lens[FT_KEY_2_INDEX(input)])
这一行了。堆栈信息如下:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 48a16775
r0 48a24368 r1 00000072 r2 00000072 r3 48a2436a
r4 48a16039 r5 ffff2031 r6 0000000c r7 48a2488a
r8 00000001 r9 ffffffff sl 48dbc7e2 fp 48a2484e
ip 00000001 sp 48dbc6d8 lr 48dd2303 pc 48dd2308 cpsr 20050030
请问这问题怎么解?
如果task_info指向的地址无效的话,应该在
ftuint16 * symbols =
task_info->keymap.symbol_strings +
task_info->keymap.indexes[FT_KEY_2_INDEX(input)] ;
就挂掉了啊?哪位大神知道是什么原因
这个问题一般在持续运行四五个小时以上才会出现