+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
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. */
/* 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