changeset 105871:1fa408e42f53

* alloc.c (make_pure_c_string): New function. * eval.c (Fautoload): Purecopy all arguments.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 06 Nov 2009 05:24:28 +0000
parents 26baacb565b0
children 89183b6f6e9d
files src/ChangeLog src/alloc.c src/eval.c
diffstat 3 files changed, 30 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Nov 06 05:16:23 2009 +0000
+++ b/src/ChangeLog	Fri Nov 06 05:24:28 2009 +0000
@@ -1,3 +1,9 @@
+2009-11-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* alloc.c (make_pure_c_string): New function.
+
+	* eval.c (Fautoload): Purecopy all arguments.
+
 2009-11-05  Kenichi Handa  <handa@m17n.org>
 
 	* fileio.c (Finsert_file_contents): Be sure set coding-system of
--- a/src/alloc.c	Fri Nov 06 05:16:23 2009 +0000
+++ b/src/alloc.c	Fri Nov 06 05:24:28 2009 +0000
@@ -4821,6 +4821,24 @@
   return string;
 }
 
+/* Return a string a string allocated in pure space.  Do not allocate
+   the string data, just point to DATA.  */
+
+Lisp_Object
+make_pure_c_string (const char *data)
+{
+  Lisp_Object string;
+  struct Lisp_String *s;
+  int nchars = strlen (data);
+
+  s = (struct Lisp_String *) pure_alloc (sizeof *s, Lisp_String);
+  s->size = nchars;
+  s->size_byte = -1;
+  s->data = data;
+  s->intervals = NULL_INTERVAL;
+  XSETSTRING (string, s);
+  return string;
+}
 
 /* Return a cons allocated from pure space.  Give it pure copies
    of CAR as car and CDR as cdr.  */
--- a/src/eval.c	Fri Nov 06 05:16:23 2009 +0000
+++ b/src/eval.c	Fri Nov 06 05:24:28 2009 +0000
@@ -2127,16 +2127,13 @@
     /* Only add entries after dumping, because the ones before are
        not useful and else we get loads of them from the loaddefs.el.  */
     LOADHIST_ATTACH (Fcons (Qautoload, function));
-
-  if (NILP (Vpurify_flag))
-    args[0] = file;
   else
-    args[0] = Fpurecopy (file);
-  args[1] = docstring;
-  args[2] = interactive;
-  args[3] = type;
-
-  return Ffset (function, Fcons (Qautoload, Flist (4, &args[0])));
+    /* We don't want the docstring in purespace (instead,
+       Snarf-documentation should (hopefully) overwrite it).  */
+    docstring = make_number (0);
+  return Ffset (function,
+		Fpurecopy (list5 (Qautoload, file, docstring,
+				  interactive, type)));
 }
 
 Lisp_Object