回文章列表
作者dust.bbs@bbs.tcfsh.tc.edu.tw (灰塵) 看板: itoc
標題[討論] edit.c的一段程式碼
時間龍夢紀元 (2008/11/06 Thu 13:03:33)
: edit.c: vedit()

      case KEY_BKSP:

        ...........

       if (!(tmp = vln->prev))
         goto ve_key;

       ve_row--;
       ve_lno--;
       vx_cur = tmp;
       ve_col = tmp->len;


       if (*ve_strim(vln->data))
         join_up(tmp);
       else
         delete_line(vln);
       ve_mode = mode | VE_REDRAW;


以及

: edit.c: vedit()

    cc = ve_row;
    if (cc < 0)
    {
      ve_row = 0;
      if (vln = vx_top->prev)
      {
        vx_top = vln;
        rscroll();
      }
      else
      {
        ve_abort(6);
      }
    }
    else if (cc >= b_lines)
====================

我想問的是在第一段中,若vx_top和vln指向一樣的地方

當vln指向的地方被free()後,

這樣還做出 vx_top->prev 這樣的動作是否會造成違法取用記憶體的問題



註:
最近本站有使用者反應用編輯器在特定狀況下會斷線

而這特定狀況是當游標在畫面的最上端的最左邊按下Backspace時會斷線

而且該行不能是整個檔案的第一行


我在猜想這個是否會造成這種異常


--
s◣◢|_                                ▲▲                        
    ∕/◤�\ 你掉下去的是普通的魔法使◣東方project系列
    |n ● ●l  還是不普通的魔法使?    ● ●  ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |║ee◥�ee芍�         持續推廣ing
    |/|Π| ██>
�  �少女汗顏中...   ▂▃▄▄▄▄�  �ψ涼宮 域  gbwind ◢

--
◢◣◢◤    #  Origin  #  台中一中  龍夢紀元  bbs.tcfsh.tc.edu.tw
◥◣◥◣  #  Author  # dust
  ◢◤◥◤  #  From    # proxy2.tcfsh.tc.edu.tw
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻