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 10:34:34 +0100

1. create a file /tmp/test.txt with this text attach below.

2. execute rgrep: (rgrep "struct" "test.txt" "/tmp/")

3. M-x next-error jumps to the line with "data structures".  That's OK.

4. M-x next-error a second time jumps to the line with "STRING_MARKED_P"
which is wrong.

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
./test.txt:6:#include "termhooks.h"		/* For struct terminal.  */

Grep finished (matches found) at Fri Feb  3 10:29:04

In GNU Emacs 24.0.93.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2012-01-30 on ix
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
Configured using:
 `configure '--with-gif=no''