hi Denys,
i guess the memmove is not needed at all.
Then ^@ seems to appear only when i run vi in gdb.
i am somewhat confused as i has never see this before.
on the other since i can still reproduce my crash even with
a plain ./busybox vi :(
NTL: i am running out of ideas can you reproduce my crash ?
re,
wh
Denys Vlasenko wrote:
> On Tuesday 24 June 2008 09:59, walter harms wrote:
>> Denys Vlasenko wrote:
>>> On Monday 23 June 2008 19:18, walter harms wrote:
>>>> hi list,
>>>> while testing to find a more easy way to produce the bug i notice that odd
>>>> behavier here:
>>>> 1. please note the ^@ i can produce that with a i <cr> in the first line
>>>> 2. there are clearly 3 lines but the systems thinks i am in line 4
>>>> everyone if free to join the hunt (note:the code is from the current svn
>>>> vi.c)
>>>>
>>>>
>>
>>
>> <------------Screenschot----------------->
>>> jdjdjdjdjdjdj
>>> dddddddddddddddddddddddddddddddd
>>> ddddddddddddddddddddddddddd
>>> ^@
>>> ~
>>> ~
>>> ~
>>> ~
>>> - No file [Modified] 3/2 150%
>> <----------------------------------------->
>>
>>> Walter, you are obviously keeping much of state in your head.
>>> For anyone who is not debugging vi at the moment the above
>>> description doesn't make much sense - too much of state is
>>> not spelled out.
>>> --
>> mea culpa,
>> to replicate the strangeness i noted do the following.
>> start latest vi from svn.
>> 1. goto insert mode
>> 2. press return a ^@ will show up
>> it is not present in the snapshot from 2008-04-25
>
> memmove was accidentally omitted:
>
> // open a hole in text[]
> static char *text_hole_make(char *p, int size) // at "p", make a 'size' byte
> hole
> {
> if (size <= 0)
> return p;
> end += size; // adjust the new END
> if (end >= (text + text_size)) {
> char *new_text;
> text_size += end - (text + text_size) + 10240;
> new_text = xrealloc(text, text_size);
> screenbegin = new_text + (screenbegin - text);
> dot = new_text + (dot - text);
> end = new_text + (end - text);
> p = new_text + (p - text);
> text = new_text;
> }
> memmove(p + size, p, end - p);
> <=======================================
> memset(p, ' ', size); // clear new hole
> file_modified++;
> return p;
> }
>
> --
> vda
>
>
>
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox