comparison src/buffer.c @ 9362:f6dc29e7e986

(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.
author Karl Heuer <kwzh@gnu.org>
date Thu, 06 Oct 1994 22:30:47 +0000
parents 8cf58b38d244
children 9f797989b817
comparison
equal deleted inserted replaced
9361:c11cc966dc6a 9362:f6dc29e7e986
356 copy that into the slot. */ 356 copy that into the slot. */
357 357
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
368 and set-visited-file-name ought to be able to use this to really 370 and set-visited-file-name ought to be able to use this to really
369 rename the buffer properly. */ 371 rename the buffer properly. */
485 487
486 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols; 488 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols;
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 }
497 } 501 }
498 502
2484 /* Nothing can work if this isn't true */ 2488 /* Nothing can work if this isn't true */
2485 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); 2489 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort ();
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);
2502 XSETFASTINT (buffer_local_flags.overwrite_mode, 4); 2506 XSETFASTINT (buffer_local_flags.overwrite_mode, 4);
2503 XSETFASTINT (buffer_local_flags.case_fold_search, 8); 2507 XSETFASTINT (buffer_local_flags.case_fold_search, 8);