Subject: bug#9458: 24.0.50; Searching in binary buffers

From: Helmut Eller <[email-masked]>
Date: Wed, 07 Sep 2011 14:50:29 +0200

search-forward seems to work strangely in binary/unibyte buffers.
Create a file test.el containing this code:

(defvar test-string (unibyte-string #xce))

(with-temp-file "test.txt"
  (set-buffer-multibyte nil)
  (setq buffer-file-coding-system 'binary)
  (insert test-string))

(with-current-buffer (get-buffer-create "test.txt")
  (set-buffer-multibyte nil)
  (setq buffer-file-coding-system 'binary)
  (erase-buffer)
  (insert-file-contents "test.txt")
  (search-forward test-string))

Executing this with: emacs -Q -batch -l test.el
prints: 
Search failed: "Î"
[Exit 255]

The Lisp code creates a file test.txt for a single character ?\xce.  As
expected, hexdump -C test.txt prints: 
00000000  ce                                                |Î|
00000001

Opening and searching that character with Emacs fails.  That's
definitely not what I was expecting.  What's the proper way to search
those characters?

In GNU Emacs 24.0.50.4 (i686-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2011-09-05 on ix
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--enable-asserts' '--enable-checking' '--with-gif=no' '--with-gnutls=no' 'CFLAGS=-g3 -O0''