# HG changeset patch # User Dan Nicolaescu # Date 1257485068 0 # Node ID 1fa408e42f53ae40dbe0cfdfbed55a4b236263ea # Parent 26baacb565b00a098d8c8dd569202e156ad82386 * alloc.c (make_pure_c_string): New function. * eval.c (Fautoload): Purecopy all arguments. diff -r 26baacb565b0 -r 1fa408e42f53 src/ChangeLog --- 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 + + * alloc.c (make_pure_c_string): New function. + + * eval.c (Fautoload): Purecopy all arguments. + 2009-11-05 Kenichi Handa * fileio.c (Finsert_file_contents): Be sure set coding-system of diff -r 26baacb565b0 -r 1fa408e42f53 src/alloc.c --- 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. */ diff -r 26baacb565b0 -r 1fa408e42f53 src/eval.c --- 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