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))
{
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;
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);
+ }
}
}