Lech Lorens wrote: > Search for \v.*\/(.*)\n.*\/\1$ in a file with the following contents. > This should find adjacent lines with paths to files with the same base name. > With re=2 I get the first pair of lines highlighted (which is > nonsense). With re=1 I get a correct highlighting of the other pair. > > #v+ > ./Dir1/Dir2/Dir3/zyxwvuts.txt > ./Dir1/Dir2/Dir3/abcdefgh.bat > > ./Dir1/Dir2/Dir3/file1.txt > ./OtherDir1/OtherDir2/file1.txt > #v- > > This happens in 7.3.1184. > > Cheers, > Lech
Valgrind finds an error when doing what you describe using Vim-7.3.1189 with re=2: ==12654== Conditional jump or move depends on uninitialised value(s) ==12654== at 0x54D823: sub_equal (regexp_nfa.c:3654) ==12654== by 0x54DA16: has_state_with_pos (regexp_nfa.c:3736) ==12654== by 0x54DD3E: addstate (regexp_nfa.c:3967) ==12654== by 0x54DEBC: addstate (regexp_nfa.c:4012) ==12654== by 0x5518B5: nfa_regmatch (regexp_nfa.c:6032) ==12654== by 0x551D35: nfa_regtry (regexp_nfa.c:6203) ==12654== by 0x5523A6: nfa_regexec_both (regexp_nfa.c:6387) ==12654== by 0x55281F: nfa_regexec_multi (regexp_nfa.c:6636) ==12654== by 0x552A1E: vim_regexec_multi (regexp.c:8073) ==12654== by 0x566D72: searchit (search.c:639) ==12654== by 0x568119: do_search (search.c:1356) ==12654== by 0x503952: normal_search (normal.c:6433) ==12654== by 0x5038A1: nv_search (normal.c:6400) ==12654== by 0x4FA744: normal_cmd (normal.c:1200) ==12654== by 0x5ED7C2: main_loop (main.c:1329) ==12654== by 0x5ED10B: main (main.c:1020) ==12654== Uninitialised value was created by a heap allocation ==12654== at 0x4C2C78F: malloc (vg_replace_malloc.c:270) ==12654== by 0x4E785B: lalloc (misc2.c:929) ==12654== by 0x54F640: nfa_regmatch (regexp_nfa.c:4952) ==12654== by 0x551D35: nfa_regtry (regexp_nfa.c:6203) ==12654== by 0x5523A6: nfa_regexec_both (regexp_nfa.c:6387) ==12654== by 0x55281F: nfa_regexec_multi (regexp_nfa.c:6636) ==12654== by 0x552A1E: vim_regexec_multi (regexp.c:8073) ==12654== by 0x566D72: searchit (search.c:639) ==12654== by 0x568119: do_search (search.c:1356) ==12654== by 0x503952: normal_search (normal.c:6433) ==12654== by 0x5038A1: nv_search (normal.c:6400) ==12654== by 0x4FA744: normal_cmd (normal.c:1200) ==12654== by 0x5ED7C2: main_loop (main.c:1329) ==12654== by 0x5ED10B: main (main.c:1020) (more errors after that) I have not found how to fix it. However, this line of code looks suspicious in function sub_equal(): 3629 todo = sub1->in_use > sub2->in_use ? sub1->in_use : sub2->in_use; I think it should be... 3629 todo = sub1->in_use < sub2->in_use ? sub1->in_use : sub2->in_use; ... but that still does not solve it anyway. sub1->list.multi[i].end.lnum is accessed and is uninitialized. Dominique -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
