X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6a43ef8e8508df7d732e639ec75f657f4363e27a..a91388fdd9785d442abc51cf485a4fdf561a638c:/src/buffer.c diff --git a/src/buffer.c b/src/buffer.c index 01418956c8..71a5e199c6 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -272,7 +272,11 @@ See also `find-buffer-visiting'. */) call the corresponding file handler. */ handler = Ffind_file_name_handler (filename, Qget_file_buffer); if (!NILP (handler)) - return call2 (handler, Qget_file_buffer, filename); + { + Lisp_Object handled_buf = call2 (handler, Qget_file_buffer, + filename); + return BUFFERP (handled_buf) ? handled_buf : Qnil; + } for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail)) { @@ -1022,7 +1026,10 @@ buffer_lisp_local_variables (struct buffer *buf) if (buf != current_buffer) val = XCDR (elt); - result = Fcons (Fcons (XCAR (elt), val), result); + result = Fcons (EQ (val, Qunbound) + ? XCAR (elt) + : Fcons (XCAR (elt), val), + result); } return result; @@ -1064,9 +1071,12 @@ No argument or nil as argument means use current buffer as BUFFER. */) idx = PER_BUFFER_IDX (offset); if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) && SYMBOLP (PER_BUFFER_SYMBOL (offset))) - result = Fcons (Fcons (PER_BUFFER_SYMBOL (offset), - PER_BUFFER_VALUE (buf, offset)), - result); + { + Lisp_Object sym = PER_BUFFER_SYMBOL (offset); + Lisp_Object val = PER_BUFFER_VALUE (buf, offset); + result = Fcons (EQ (val, Qunbound) ? sym : Fcons (sym, val), + result); + } } }