aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1994-10-06 22:30:47 +0000
committerKarl Heuer1994-10-06 22:30:47 +0000
commitaab808227e3e75dacde6b376545989bc0dac8cb5 (patch)
treea099b6f9f944e3debd90bc16240c7b3af214ee9d
parent838abf56705838a2cc26abcf442c9fd897937011 (diff)
downloademacs-aab808227e3e75dacde6b376545989bc0dac8cb5.tar.gz
emacs-aab808227e3e75dacde6b376545989bc0dac8cb5.zip
(init_buffer_once): Don't use XSETFASTINT when negative.
(reset_buffer_local_variables, Fbuffer_local_variables): Access buffer_local_flags as Lisp_Object, not int.
-rw-r--r--src/buffer.c38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 0642742fe1c..61ece33ed86 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -358,10 +358,12 @@ reset_buffer_local_variables (b)
358 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags; 358 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags;
359 offset < sizeof (struct buffer); 359 offset < sizeof (struct buffer);
360 offset += sizeof (Lisp_Object)) /* sizeof EMACS_INT == sizeof Lisp_Object */ 360 offset += sizeof (Lisp_Object)) /* sizeof EMACS_INT == sizeof Lisp_Object */
361 if (*(EMACS_INT *)(offset + (char *) &buffer_local_flags) > 0 361 {
362 || *(EMACS_INT *)(offset + (char *) &buffer_local_flags) == -2) 362 int flag = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags));
363 *(Lisp_Object *)(offset + (char *)b) = 363 if (flag > 0 || flag == -2)
364 *(Lisp_Object *)(offset + (char *)&buffer_defaults); 364 *(Lisp_Object *)(offset + (char *)b) =
365 *(Lisp_Object *)(offset + (char *)&buffer_defaults);
366 }
365} 367}
366 368
367/* We split this away from generate-new-buffer, because rename-buffer 369/* We split this away from generate-new-buffer, because rename-buffer
@@ -487,10 +489,12 @@ No argument or nil as argument means use current buffer as BUFFER.")
487 offset < sizeof (struct buffer); 489 offset < sizeof (struct buffer);
488 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */ 490 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */
489 { 491 {
490 mask = *(EMACS_INT *)(offset + (char *) &buffer_local_flags); 492 mask = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags));
491 if (mask == -1 || (buf->local_var_flags & mask)) 493 if (mask == -1 || (buf->local_var_flags & mask))
492 if (SYMBOLP (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols))) 494 if (SYMBOLP (*(Lisp_Object *)(offset
493 result = Fcons (Fcons (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols), 495 + (char *)&buffer_local_symbols)))
496 result = Fcons (Fcons (*((Lisp_Object *)
497 (offset + (char *)&buffer_local_symbols)),
494 *(Lisp_Object *)(offset + (char *)buf)), 498 *(Lisp_Object *)(offset + (char *)buf)),
495 result); 499 result);
496 } 500 }
@@ -2486,16 +2490,16 @@ init_buffer_once ()
2486 2490
2487 /* 0 means not a lisp var, -1 means always local, else mask */ 2491 /* 0 means not a lisp var, -1 means always local, else mask */
2488 bzero (&buffer_local_flags, sizeof buffer_local_flags); 2492 bzero (&buffer_local_flags, sizeof buffer_local_flags);
2489 XSETFASTINT (buffer_local_flags.filename, -1); 2493 XSETINT (buffer_local_flags.filename, -1);
2490 XSETFASTINT (buffer_local_flags.directory, -1); 2494 XSETINT (buffer_local_flags.directory, -1);
2491 XSETFASTINT (buffer_local_flags.backed_up, -1); 2495 XSETINT (buffer_local_flags.backed_up, -1);
2492 XSETFASTINT (buffer_local_flags.save_length, -1); 2496 XSETINT (buffer_local_flags.save_length, -1);
2493 XSETFASTINT (buffer_local_flags.auto_save_file_name, -1); 2497 XSETINT (buffer_local_flags.auto_save_file_name, -1);
2494 XSETFASTINT (buffer_local_flags.read_only, -1); 2498 XSETINT (buffer_local_flags.read_only, -1);
2495 XSETFASTINT (buffer_local_flags.major_mode, -1); 2499 XSETINT (buffer_local_flags.major_mode, -1);
2496 XSETFASTINT (buffer_local_flags.mode_name, -1); 2500 XSETINT (buffer_local_flags.mode_name, -1);
2497 XSETFASTINT (buffer_local_flags.undo_list, -1); 2501 XSETINT (buffer_local_flags.undo_list, -1);
2498 XSETFASTINT (buffer_local_flags.mark_active, -1); 2502 XSETINT (buffer_local_flags.mark_active, -1);
2499 2503
2500 XSETFASTINT (buffer_local_flags.mode_line_format, 1); 2504 XSETFASTINT (buffer_local_flags.mode_line_format, 1);
2501 XSETFASTINT (buffer_local_flags.abbrev_mode, 2); 2505 XSETFASTINT (buffer_local_flags.abbrev_mode, 2);