[討論] getyx_ansi好像沒考慮roll的影響

作者: x4base (RU~)   2012-04-12 17:09:27
screen.c裡
GetCurrentLine裡用了roll來決定應該取big_picture的第幾項
screenline_t* GetCurrentLine(){
register int i = cur_ln + roll;
if(i >= scr_lns)
i %= scr_lns;
return &big_picture[i];
}
但相較之下getyx_ansi就沒有
142 getyx_ansi(int *py, int *px)
143 {
146 int y = cur_ln, x = cur_col;
159 slp = &big_picture[y];
164 *px -= (strlen((char*)slp->data)
- strlen_noansi((char*)slp->data));
這樣似乎會造成slp設錯行的情形
164行的那個計算也會出錯
而導致最後的px是錯的
造成的影響是文章讀到一半(roll不為0時)再推文時游標的位置會怪怪的
因為用了別行的長度來判斷位置
參考GetCurrentLine的算法
我把
159 slp = &big_picture[y];
改成
slp = &big_picture[(y+roll)%scr_lns];
目前好像蠻正常的
不知道有沒有副作用

Links booklink

Contact Us: admin [ a t ] ucptt.com