Subject: Re: bug#14755: Trunk bootstrap failure

From: Ari Roponen <[email-masked]>
Date: Sun, 30 Jun 2013 15:48:25 +0300

Angelo Graziosi <[email-masked]> writes:

> As suspected (see this thread:
> http://lists.gnu.org/archive/html/emacs-devel/2013-06/msg01328.html)
> the bootstrap failure of trunk r.113227 probably isn't platform
> dependent. Not only it fails on Cygwin but also on Kubuntu. You need
> only to bootstrap on a *clean clean* tree.
>
>   Angelo
>

I got the same failure, too. This commit seems to cause it:

  revno: 113220 [merge]
  committer: K. Handa <[email-masked]>
  branch nick: trunk
  timestamp: Sat 2013-06-29 12:46:39 +0900
  message:
    Add the coding system prefer-utf-8.
  
The above commit added this to `select-safe-coding-system':

  @@ -1029,6 +1029,11 @@
   	      (error "Save aborted"))))
         (when (and tick (/= tick (buffer-chars-modified-tick)))
   	(error "Canceled because the buffer was modified"))
  +      (if (and (eq (coding-system-type coding-system) 'undecided)
  +	       (coding-system-get coding-system :prefer-utf-8)
  +	       (< (- to from) (- (position-bytes to) (position-bytes from))))
  +	  (setq coding-system
  +		(coding-system-change-text-conversion coding-system 'utf-8)))
         coding-system)))

This code fails when the "Kludgy feature" mentioned in the docstring is
used: if FROM is a string, the string is the target text, and TO is
ignored.

The following patch seems to fix the problem. Remember to delete
src/bootstrap-emacs, so that the patched version is used.

=== modified file 'lisp/international/mule-cmds.el'
--- lisp/international/mule-cmds.el	2013-06-28 14:42:55 +0000
+++ lisp/international/mule-cmds.el	2013-06-30 06:07:06 +0000
@@ -1031,7 +1031,9 @@
 	(error "Canceled because the buffer was modified"))
       (if (and (eq (coding-system-type coding-system) 'undecided)
 	       (coding-system-get coding-system :prefer-utf-8)
-	       (< (- to from) (- (position-bytes to) (position-bytes from))))
+	       (if (stringp from)
+		   (multibyte-string-p from)
+		 (< (- to from) (- (position-bytes to) (position-bytes from)))))
 	  (setq coding-system
 		(coding-system-change-text-conversion coding-system 'utf-8)))
       coding-system)))

-- 
Ari Roponen