On Sun, Jul 15, 2007 at 07:25:30PM +0100, Bruce Duncan wrote:
>tags 432682 + patch
>thanks
>
>Sorry, that bug report didn't actually say anything! Here's the real
>backtrace:
>
>Program received signal SIGSEGV, Segmentation fault.
>0x0000000000403828 in ch_length () at ch.c:508
>508 if (ch_flags & CH_HELPFILE)
>(gdb) bt
>#0 0x0000000000403828 in ch_length () at ch.c:508
>#1 0x00000000004041cd in ch_seek (pos=0) at ch.c:419
>#2 0x000000000040b7cd in jump_loc (pos=0, sline=0) at jump.c:199
>#3 0x000000000040baf4 in repaint () at jump.c:98
>#4 0x00000000004105fb in error (fmt=0x415328 "%s", parg=0x7fffd65b9a10) at
>output.c:529
>#5 0x00000000004092b6 in edit_ifile (ifile=0x6277d0) at edit.c:311
>#6 0x000000000040946a in edit_istep (h=0x6277d0, n=-1, dir=1) at edit.c:527
>#7 0x0000000000407167 in commands () at command.c:1412
>#8 0x0000000000402158 in main (argc=<value optimized out>, argv=<value
>optimized out>) at main.c:286
>
>My interpretation of the crash is that less is attempting to get information
>about the file it's failing to display in order to decide where to place the
>cursor. It decides that the display is "squished", meaning that the first
>displayed line is not at the top of the screen, and wants to repaint the
>screen. This repaint causes it to try to find out the final cursor location
>from the current position in the (non-existant) file, and crash.
>
>This repainting behaviour seemed to have no effect in any test case I could
>come up with, so I removed it. The patch that does this is:
>
>--- output.c.orig 2007-07-15 18:51:25.000000000 +0100
>+++ output.c 2007-07-15 19:07:09.000000000 +0100
>@@ -525,8 +525,6 @@
>
> if (any_display && is_tty)
> {
>- if (!oldbot)
>- squish_check();
> at_exit();
> clear_bot();
> at_enter(AT_STANDOUT);
>
>Of course, less's assessment that the display is "squished" is wrong anyway
>(it blanked the screen before displaying this short file) which is why I
>believe it's safe to remove it. However, if you disagree with this resolution
>you might like to investigate making the squished detection more clever.
>
>Bruce
I couldn't reproduce this bug with less 418-1.
less -V
less 418
echo hello > test
echo goodbye > test2
chmod -r test2
ls -l test*
-rw-r--r-- 1 anibal anibal 6 2009-04-18 00:36 test
--w------- 1 anibal anibal 8 2009-04-18 00:36 test2
less test test2
hello
test (file 1 of 2) (END) - Next: test2
When I enter :n, I get:
test2: Permission denied (press RETURN)
followed by:
No next file (press RETURN)
and then by:
test (END)
and less finishes when I enter q.
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]