From fb33fa43b4e085d01a41f1533ea699531a67ef49 Mon Sep 17 00:00:00 2001
From: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Tue, 2 Aug 2011 12:02:52 -0400
Subject: [PATCH] * src/keymap.c (Fdefine_key): Fix Lisp_Object/int mixup;
 apply some CSE.

---
 src/ChangeLog |  4 ++++
 src/keymap.c  | 13 +++----------
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 858833dbe25..59f09515829 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2011-08-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* keymap.c (Fdefine_key): Fix Lisp_Object/int mixup; apply some CSE.
+
 2010-12-03  Don March  <don@ohspite.net>
 
 	* keymap.c (Fdefine_key): Fix non-prefix key error message when
diff --git a/src/keymap.c b/src/keymap.c
index 03688abfe4c..c461fdddbbc 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1217,16 +1217,9 @@ binding KEY to DEF is added at the front of KEYMAP.  */)
       keymap = get_keymap (cmd, 0, 1);
       if (!CONSP (keymap))
 	{
-	  char trailing_esc[5];
-	  if (c == meta_prefix_char && metized)
-	    {
-	      if (idx == 0)
-		strcpy(trailing_esc, "ESC");
-	      else
-		strcpy(trailing_esc, " ESC");
-	    }
-	  else
-	      strcpy(trailing_esc, "");
+	  const char *trailing_esc = ((EQ (c, meta_prefix_char) && metized)
+				      ? (idx == 0 ? "ESC" : " ESC")
+				      : "");
 
 	  /* We must use Fkey_description rather than just passing key to
 	     error; key might be a vector, not a string.  */
-- 
2.39.5