]> git.eshelyaron.com Git - emacs.git/commitdiff
* alloc.c (make_pure_c_string): New function.
authorDan Nicolaescu <dann@ics.uci.edu>
Fri, 6 Nov 2009 05:24:28 +0000 (05:24 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Fri, 6 Nov 2009 05:24:28 +0000 (05:24 +0000)
* eval.c (Fautoload): Purecopy all arguments.

src/ChangeLog
src/alloc.c
src/eval.c

index d103f180c52aa4f9ece32a55f74fdeff6bc1f2b1..f79489fe4fa41ca87931188d55951b24bad8306d 100644 (file)
@@ -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
index 557621af797f9727a65f587f7c1bc0821f328d9f..a074bfe2d72ef1c72056111bb4b487ec945be568 100644 (file)
@@ -4821,6 +4821,24 @@ make_pure_string (data, nchars, nbytes, multibyte)
   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.  */
index 136b75f756be51822870334ab0ece8dfbcc99aa8..3945a1b7a55f7b8b47d170fc0b458bba6b777b17 100644 (file)
@@ -2127,16 +2127,13 @@ this does nothing and returns nil.  */)
     /* 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