comparison src/buffer.c @ 116:9f59509498e1 r20-1b10

Import from CVS: tag r20-1b10
author cvs
date Mon, 13 Aug 2007 09:23:06 +0200
parents 8619ce7e4c50
children cca96a509cfe
comparison
equal deleted inserted replaced
115:f109f7dabbe2 116:9f59509498e1
1214 Any processes that have this buffer as the `process-buffer' are killed 1214 Any processes that have this buffer as the `process-buffer' are killed
1215 with `delete-process'. 1215 with `delete-process'.
1216 */ 1216 */
1217 (bufname)) 1217 (bufname))
1218 { 1218 {
1219 /* This function can GC */ 1219 /* This function can call lisp */
1220 Lisp_Object buf; 1220 Lisp_Object buf;
1221 REGISTER struct buffer *b; 1221 REGISTER struct buffer *b;
1222 struct gcpro gcpro1, gcpro2; 1222 struct gcpro gcpro1, gcpro2;
1223 1223
1224 if (NILP (bufname)) 1224 if (NILP (bufname))
1382 if (STRINGP (b->auto_save_file_name) 1382 if (STRINGP (b->auto_save_file_name)
1383 && b->auto_save_modified != 0 1383 && b->auto_save_modified != 0
1384 && BUF_SAVE_MODIFF (b) < b->auto_save_modified) 1384 && BUF_SAVE_MODIFF (b) < b->auto_save_modified)
1385 { 1385 {
1386 if (!NILP (Vdelete_auto_save_files)) 1386 if (!NILP (Vdelete_auto_save_files))
1387 internal_delete_file (b->auto_save_file_name); 1387 {
1388 /* deleting the auto save file might kill b! */
1389 /* #### dmoore - fix this crap, we do this same gcpro and
1390 buffer liveness check multiple times. Let's get a
1391 macro or something for it. */
1392 GCPRO1 (buf);
1393 internal_delete_file (b->auto_save_file_name);
1394 UNGCPRO;
1395 b = XBUFFER (buf);
1396
1397 if (!BUFFER_LIVE_P (b))
1398 return Qnil;
1399
1400 if (b == current_buffer)
1401 {
1402 Fset_buffer (Fother_buffer (buf, Qnil, Qnil));
1403 if (b == current_buffer)
1404 return Qnil;
1405 }
1406 }
1388 } 1407 }
1389 1408
1390 uninit_buffer_markers (b); 1409 uninit_buffer_markers (b);
1391 1410
1392 kill_buffer_local_variables (b); 1411 kill_buffer_local_variables (b);