I did a bit of debugging with latest vim-7.1 (patches 1-166).

I found that vim loops forever in a while(...)
loop in syntax.c in function syntax_start():

syntax.c:

 562     while (current_lnum < lnum)
 563     {
 ...
 ...
 596                 load_current_state(prev);
 ...
 ...
 609         line_breakcheck();
 610         if (got_int)
 611         {
 612             current_lnum = lnum;
 613             break;
 614         }
 615     }

This while loop never ends with attached "vim_testcase" file.
Adding some printf(), I can see that:

  - Before entering above while loop:
      - current_lnum == 65
      - lnum == 80

  - Then when iterating in the while loop:
      - lnum remains unchanged (80)
      - current_lnum becomes:

        65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
        65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
        65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
        etc.

current_lnum never reaches lnum (80) so loop never ends.

current_lnum goes from 78 to 65 when calling load_current_state(prev)
at line 596.

I do not understand the idea behind load_current_state() and
store_current_state() to go beyond and come up with fix for this.

I posted this to the vim_dev mailing list:

http://groups.google.com/group/vim_dev/browse_thread/thread/157f265102c48127/5550df9950274543?lnk=st&q=#5550df9950274543

-- 
Vim locks up while editing a specific file (file attached)
https://bugs.launchpad.net/bugs/68960
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to