aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChong Yidong2012-02-07 14:34:52 +0800
committerChong Yidong2012-02-07 14:34:52 +0800
commit0992bd9c06b90c8f316187467bcc005cbe51050e (patch)
tree8dc76890f747f5aaccd2e2754fad74616c7d18bf /src
parent75ded89ba50f0b1758fe5c70701e0ae422b0c497 (diff)
downloademacs-0992bd9c06b90c8f316187467bcc005cbe51050e.tar.gz
emacs-0992bd9c06b90c8f316187467bcc005cbe51050e.zip
Fix and doc-fix for `buffer-local-variables'.
* src/buffer.c (Fbuffer_local_variables) (buffer_lisp_local_variables): Handle unbound vars correctly; don't let Qunbound leak into Lisp. * doc/lispref/variables.texi (Creating Buffer-Local): Minor clarification to buffer-local-variables doc. Fixes: debbugs:10715
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/buffer.c14
2 files changed, 16 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 5e4d995d857..71af862cdac 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12012-02-07 Chong Yidong <cyd@gnu.org>
2
3 * buffer.c (Fbuffer_local_variables)
4 (buffer_lisp_local_variables): Handle unbound vars correctly;
5 don't let Qunbound leak into Lisp.
6
12012-02-07 Glenn Morris <rgm@gnu.org> 72012-02-07 Glenn Morris <rgm@gnu.org>
2 8
3 * image.c (Fimagemagick_types): Doc fix. 9 * image.c (Fimagemagick_types): Doc fix.
diff --git a/src/buffer.c b/src/buffer.c
index 01418956c8d..a6f61a1936a 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1022,7 +1022,10 @@ buffer_lisp_local_variables (struct buffer *buf)
1022 if (buf != current_buffer) 1022 if (buf != current_buffer)
1023 val = XCDR (elt); 1023 val = XCDR (elt);
1024 1024
1025 result = Fcons (Fcons (XCAR (elt), val), result); 1025 result = Fcons (EQ (val, Qunbound)
1026 ? XCAR (elt)
1027 : Fcons (XCAR (elt), val),
1028 result);
1026 } 1029 }
1027 1030
1028 return result; 1031 return result;
@@ -1064,9 +1067,12 @@ No argument or nil as argument means use current buffer as BUFFER. */)
1064 idx = PER_BUFFER_IDX (offset); 1067 idx = PER_BUFFER_IDX (offset);
1065 if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) 1068 if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
1066 && SYMBOLP (PER_BUFFER_SYMBOL (offset))) 1069 && SYMBOLP (PER_BUFFER_SYMBOL (offset)))
1067 result = Fcons (Fcons (PER_BUFFER_SYMBOL (offset), 1070 {
1068 PER_BUFFER_VALUE (buf, offset)), 1071 Lisp_Object sym = PER_BUFFER_SYMBOL (offset);
1069 result); 1072 Lisp_Object val = PER_BUFFER_VALUE (buf, offset);
1073 result = Fcons (EQ (val, Qunbound) ? sym : Fcons (sym, val),
1074 result);
1075 }
1070 } 1076 }
1071 } 1077 }
1072 1078