Subject: bug#10707: 24.0.93; next-error jumps to wrong location for rgrep buffers

From: Helmut Eller <[email-masked]>
Date: Fri, 03 Feb 2012 15:25:38 +0100

* Andreas Schwab [2012-02-03 13:08] writes:

> Helmut Eller <[email-masked]> writes:
>
>> Here the file test.txt:
>>
>> --- start ---
>> /* This file is part of the core Lisp implementation, and thus must
>>    deal with the real data structures.  If the Lisp implementation is
>>    replaced, this file likely will not be used.  */
>>
>> #include "termhooks.h"		/* For struct terminal.  */
>> #define MARK_STRING(S)		((S)->size |= ARRAY_MARK_FLAG)
>> #define UNMARK_STRING(S)	((S)->size &= ~ARRAY_MARK_FLAG)
>> #define STRING_MARKED_P(S)	(((S)->size & ARRAY_MARK_FLAG) != 0)
>>
>> #define VECTOR_MARK(V)		((V)->header.size |= ARRAY_MARK_FLAG)
>> #define VECTOR_UNMARK(V)	((V)->header.size &= ~ARRAY_MARK_FLAG)
>> #define VECTOR_MARKED_P(V)	(((V)->header.size & ARRAY_MARK_FLAG) != 0)
>> --- end ---
>>
>> The output in my *grep* buffer looks so
>>
>> -*- mode: grep; default-directory: "/tmp/" -*-
>> Grep started at Fri Feb  3 10:29:04
>>
>> find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o
>> -path \*/MCVS -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o
>> -path \*/.bzr -o -path \*/_MTN -o -path \*/_darcs -o -path
>> \*/\{arch\} \) -prune -o \( -name .\#\* -o -name \*.o -o -name \*\~
>> -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o
>> -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name
>> \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name
>> \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name
>> \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name
>> \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o
>> -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name
>> \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name
>> \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name
>> \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o
>> -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name
>> \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn
>> -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name
>> \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name
>> \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o
>> -type f \( -name test.txt \) -exec grep -i -nH -e struct {} +
>> ./test.txt:3: deal with the real data structures.  If the Lisp
>> implementation is
>
> Why line 3?  The text is on line 2.

Probably because I forgot to paste a newline in the first line.
Without the newline in the first line the output is 

./test.txt:2:   deal with the real data structures.  If the Lisp implementation is
./test.txt:5:#include "termhooks.h"		/* For struct terminal.  */

Still jumping to the with "STRING_MARKED_P" in the step 4 is wrong.

Helmut