comparison src/buffer.c @ 2353:186992a01a13

[xemacs-hg @ 2004-10-28 10:41:35 by stephent] fix record-buffer crash <87u0sf2ksj.fsf_-_@tleepslib.sk.tsukuba.ac.jp>
author stephent
date Thu, 28 Oct 2004 10:41:40 +0000
parents 61855263cb07
children ecf1ebac70d8
comparison
equal deleted inserted replaced
2352:cae9d7b3fe76 2353:186992a01a13
1372 */ 1372 */
1373 (buffer)) 1373 (buffer))
1374 { 1374 {
1375 REGISTER Lisp_Object lynk, prev; 1375 REGISTER Lisp_Object lynk, prev;
1376 struct frame *f = selected_frame (); 1376 struct frame *f = selected_frame ();
1377 1377 int buffer_found = 0;
1378
1379 CHECK_BUFFER (buffer);
1380 if (!BUFFER_LIVE_P (XBUFFER (buffer)))
1381 return Qnil;
1378 prev = Qnil; 1382 prev = Qnil;
1379 for (lynk = Vbuffer_alist; CONSP (lynk); lynk = XCDR (lynk)) 1383 for (lynk = Vbuffer_alist; CONSP (lynk); lynk = XCDR (lynk))
1380 { 1384 {
1381 if (EQ (XCDR (XCAR (lynk)), buffer)) 1385 if (EQ (XCDR (XCAR (lynk)), buffer))
1382 break; 1386 {
1387 buffer_found = 1;
1388 break;
1389 }
1383 prev = lynk; 1390 prev = lynk;
1384 } 1391 }
1385 /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */ 1392 if (buffer_found)
1386 if (NILP (prev)) 1393 {
1387 Vbuffer_alist = XCDR (Vbuffer_alist); 1394 /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */
1395 if (NILP (prev))
1396 Vbuffer_alist = XCDR (Vbuffer_alist);
1397 else
1398 XCDR (prev) = XCDR (XCDR (prev));
1399 XCDR (lynk) = Vbuffer_alist;
1400 Vbuffer_alist = lynk;
1401 }
1388 else 1402 else
1389 XCDR (prev) = XCDR (XCDR (prev)); 1403 Vbuffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer), Vbuffer_alist);
1390 XCDR (lynk) = Vbuffer_alist;
1391 Vbuffer_alist = lynk;
1392 1404
1393 /* That was the global one. Now do the same thing for the 1405 /* That was the global one. Now do the same thing for the
1394 per-frame buffer-alist. */ 1406 per-frame buffer-alist. */
1407 buffer_found = 0;
1395 prev = Qnil; 1408 prev = Qnil;
1396 for (lynk = f->buffer_alist; CONSP (lynk); lynk = XCDR (lynk)) 1409 for (lynk = f->buffer_alist; CONSP (lynk); lynk = XCDR (lynk))
1397 { 1410 {
1398 if (EQ (XCDR (XCAR (lynk)), buffer)) 1411 if (EQ (XCDR (XCAR (lynk)), buffer))
1399 break; 1412 {
1413 buffer_found = 1;
1414 break;
1415 }
1400 prev = lynk; 1416 prev = lynk;
1401 } 1417 }
1402 /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */ 1418 if (buffer_found)
1403 if (NILP (prev)) 1419 {
1404 f->buffer_alist = XCDR (f->buffer_alist); 1420 /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */
1421 if (NILP (prev))
1422 f->buffer_alist = XCDR (f->buffer_alist);
1423 else
1424 XCDR (prev) = XCDR (XCDR (prev));
1425 XCDR (lynk) = f->buffer_alist;
1426 f->buffer_alist = lynk;
1427 }
1405 else 1428 else
1406 XCDR (prev) = XCDR (XCDR (prev)); 1429 f->buffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer),
1407 XCDR (lynk) = f->buffer_alist; 1430 f->buffer_alist);
1408 f->buffer_alist = lynk;
1409 1431
1410 return Qnil; 1432 return Qnil;
1411 } 1433 }
1412 1434
1413 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, 1, 1, 0, /* 1435 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, 1, 1, 0, /*