aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2003-05-09 14:03:51 +0000
committerRichard M. Stallman2003-05-09 14:03:51 +0000
commitca2de34225f857715a8b030261f3102005d7b036 (patch)
tree7ba2c1d21130183ecddf099212ea340724b4cb0c
parent611a8f8c1fd311aa28e94b870e7ec2c2ab059353 (diff)
downloademacs-ca2de34225f857715a8b030261f3102005d7b036.tar.gz
emacs-ca2de34225f857715a8b030261f3102005d7b036.zip
(Fprin1_to_string): Instead of gcpro, set abort_on_gc.
Bind Qinhibit_modification_hooks to t so there will be no GC. Rename local `tem' to `save_deactivate_mark'.
-rw-r--r--src/ChangeLog18
-rw-r--r--src/print.c19
2 files changed, 30 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b6af51313b6..b58dfb49fa2 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,21 @@
12003-05-09 Richard M. Stallman <rms@gnu.org>
2
3 * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc.
4 Bind Qinhibit_modification_hooks to t so there will be no GC.
5 Rename local `tem' to `save_deactivate_mark'.
6
7 * eval.c (specpdl_ptr): Declare volatile.
8 (unbind_to): Copy the whole binding and decrement specpdl_ptr
9 before doing the work of unbinding it.
10
11 * lisp.h (struct specbinding): Declare elements volatile.
12 (specpdl_ptr): Declare volatile.
13
14 * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling.
15
16 * alloca.c: Test DO_BLOCK_INPUT rather than `emacs'
17 for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h.
18
12003-05-08 Dave Love <fx@gnu.org> 192003-05-08 Dave Love <fx@gnu.org>
2 20
3 * coding.c (Vlast_coding_system_used): Doc fix. 21 * coding.c (Vlast_coding_system_used): Doc fix.
diff --git a/src/print.c b/src/print.c
index 38e82488b3c..dc72539f7f5 100644
--- a/src/print.c
+++ b/src/print.c
@@ -759,14 +759,18 @@ A printed representation of an object is text which describes that object. */)
759{ 759{
760 PRINTDECLARE; 760 PRINTDECLARE;
761 Lisp_Object printcharfun; 761 Lisp_Object printcharfun;
762 struct gcpro gcpro1, gcpro2; 762 /* struct gcpro gcpro1, gcpro2; */
763 Lisp_Object tem; 763 Lisp_Object save_deactivate_mark;
764 int count = specpdl_ptr - specpdl;
765
766 specbind (Qinhibit_modification_hooks, Qt);
764 767
765 /* Save and restore this--we are altering a buffer 768 /* Save and restore this--we are altering a buffer
766 but we don't want to deactivate the mark just for that. 769 but we don't want to deactivate the mark just for that.
767 No need for specbind, since errors deactivate the mark. */ 770 No need for specbind, since errors deactivate the mark. */
768 tem = Vdeactivate_mark; 771 save_deactivate_mark = Vdeactivate_mark;
769 GCPRO2 (object, tem); 772 /* GCPRO2 (object, save_deactivate_mark); */
773 abort_on_gc++;
770 774
771 printcharfun = Vprin1_to_string_buffer; 775 printcharfun = Vprin1_to_string_buffer;
772 PRINTPREPARE; 776 PRINTPREPARE;
@@ -781,10 +785,11 @@ A printed representation of an object is text which describes that object. */)
781 Ferase_buffer (); 785 Ferase_buffer ();
782 set_buffer_internal (old); 786 set_buffer_internal (old);
783 787
784 Vdeactivate_mark = tem; 788 Vdeactivate_mark = save_deactivate_mark;
785 UNGCPRO; 789 /* UNGCPRO; */
786 790
787 return object; 791 abort_on_gc--;
792 return unbind_to (count, object);
788} 793}
789 794
790DEFUN ("princ", Fprinc, Sprinc, 1, 2, 0, 795DEFUN ("princ", Fprinc, Sprinc, 1, 2, 0,