changeset 91185:62752a838b86

(read1): Redo the previous change with checking Vpurify_flag.
author Kenichi Handa <handa@m17n.org>
date Wed, 05 Dec 2007 05:07:51 +0000
parents f73ebed781c2
children d2f87e1e294f
files src/lread.c
diffstat 1 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/lread.c	Tue Dec 04 22:43:44 2007 +0000
+++ b/src/lread.c	Wed Dec 05 05:07:51 2007 +0000
@@ -2992,19 +2992,18 @@
 	      }
 	  }
 	{
-#if 0
-	  /* Fixme: The fullowing code is currently commented out
-	     because it results in strange error in C-h f.  For the
-	     moment, I don't have a time to track down the
-	     problem.  -- Handa */
-	  Lisp_Object name = make_specified_string (read_buffer, -1,
-						    p - read_buffer,
-						    multibyte);
-	  Lisp_Object result = (uninterned_symbol ? Fmake_symbol (name)
-				: Fintern (name, Qnil));
-#endif
-	  Lisp_Object result = uninterned_symbol ? make_symbol (read_buffer)
-	    : intern (read_buffer);
+	  Lisp_Object name, result;
+	  EMACS_INT nbytes = p - read_buffer;
+	  EMACS_INT nchars
+	    = (multibyte ? multibyte_chars_in_text (read_buffer, nbytes)
+	       : nbytes);
+
+	  if (uninterned_symbol && ! NILP (Vpurify_flag))
+	    name = make_pure_string (read_buffer, nchars, nbytes, multibyte);
+	  else
+	    name = make_specified_string (read_buffer, nchars, nbytes,multibyte);
+	  result = (uninterned_symbol ? Fmake_symbol (name)
+		    : Fintern (name, Qnil));
 
 	  if (EQ (Vread_with_symbol_positions, Qt)
 	      || EQ (Vread_with_symbol_positions, readcharfun))