[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master db30296: Put re-loaded file back at start of load-h
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] master db30296: Put re-loaded file back at start of load-history (bug#26837) |
Date: |
Tue, 9 May 2017 19:44:22 -0400 (EDT) |
branch: master
commit db30296baed2d9c3c80eb89f6fae256e81ee2fbc
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
Put re-loaded file back at start of load-history (bug#26837)
* src/lread.c (readevalloop): Fix the "whole buffer" check to
operate in the correct buffer.
(Feval_buffer): Move point back to the start after checking
for lexical binding.
* test/src/lread-tests.el (lread-test-bug26837): New test.
* test/data/somelib.el, test/data/somelib2.el: New test data files.
---
src/lread.c | 3 ++-
test/data/somelib.el | 7 +++++++
test/data/somelib2.el | 7 +++++++
test/src/lread-tests.el | 13 +++++++++++++
4 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/src/lread.c b/src/lread.c
index 6467043..f0ad0c2 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1885,7 +1885,7 @@ readevalloop (Lisp_Object readcharfun,
/* On the first cycle, we can easily test here
whether we are reading the whole buffer. */
if (b && first_sexp)
- whole_buffer = (PT == BEG && ZV == Z);
+ whole_buffer = (BUF_PT (b) == BUF_BEG (b) && BUF_ZV (b) == BUF_Z (b));
instream = stream;
read_next:
@@ -2008,6 +2008,7 @@ This function preserves the position of point. */)
record_unwind_protect (save_excursion_restore, save_excursion_save ());
BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
specbind (Qlexical_binding, lisp_file_lexically_bound_p (buf) ? Qt : Qnil);
+ BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
readevalloop (buf, 0, filename,
!NILP (printflag), unibyte, Qnil, Qnil, Qnil);
unbind_to (count, Qnil);
diff --git a/test/data/somelib.el b/test/data/somelib.el
new file mode 100644
index 0000000..7b8d403
--- /dev/null
+++ b/test/data/somelib.el
@@ -0,0 +1,7 @@
+;;; -*- lexical-binding: t; -*-
+
+;; blah
+
+(defun somefunc () t)
+
+(provide 'somelib)
diff --git a/test/data/somelib2.el b/test/data/somelib2.el
new file mode 100644
index 0000000..0515614
--- /dev/null
+++ b/test/data/somelib2.el
@@ -0,0 +1,7 @@
+;;; -*- lexical-binding: t; -*-
+
+;; blah
+
+(defun somefunc2 () t)
+
+(provide 'somelib2)
diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el
index 8434234..0427fe6 100644
--- a/test/src/lread-tests.el
+++ b/test/src/lread-tests.el
@@ -142,4 +142,17 @@ literals (Bug#20852)."
"unescaped character literals "
"\", (, ), ;, [, ] detected!")))))
+(ert-deftest lread-test-bug26837 ()
+ "Test for http://debbugs.gnu.org/26837 ."
+ (let ((load-path (cons
+ (file-name-as-directory
+ (expand-file-name "data" (getenv "EMACS_TEST_DIRECTORY")))
+ load-path)))
+ (load "somelib" nil t)
+ (should (string-suffix-p "/somelib.el" (caar load-history)))
+ (load "somelib2" nil t)
+ (should (string-suffix-p "/somelib2.el" (caar load-history)))
+ (load "somelib" nil t)
+ (should (string-suffix-p "/somelib.el" (caar load-history)))))
+
;;; lread-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master db30296: Put re-loaded file back at start of load-history (bug#26837),
Glenn Morris <=