diff options
| author | Eli Zaretskii | 2016-06-22 18:55:14 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2016-06-22 18:55:14 +0300 |
| commit | cc113e557d56d849e9699ceb3bc4a735c628b46e (patch) | |
| tree | e42ef7f921cfc576464c0fdf4427781f0a3ea7a0 | |
| parent | 791193d309a0e8f60c3cdae2941c718d07411159 (diff) | |
| download | emacs-cc113e557d56d849e9699ceb3bc4a735c628b46e.tar.gz emacs-cc113e557d56d849e9699ceb3bc4a735c628b46e.zip | |
Fix test for whether the '.el' file is newer than '.elc'
* src/lread.c (Fload): Don't overwrite the last character of the
file name in FOUND with 'c', unless the file name ended in ".elc"
to begin with. Don't treat empty files as byte-compiled. See
http://lists.gnu.org/archive/html/emacs-devel/2016-06/msg00463.html
for more details of the problem this caused.
| -rw-r--r-- | src/lread.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lread.c b/src/lread.c index 9f804ac3194..5c47f78f8e4 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -1204,7 +1204,11 @@ Return t if the file exists and loads successfully. */) | |||
| 1204 | specbind (Qold_style_backquotes, Qnil); | 1204 | specbind (Qold_style_backquotes, Qnil); |
| 1205 | record_unwind_protect (load_warn_old_style_backquotes, file); | 1205 | record_unwind_protect (load_warn_old_style_backquotes, file); |
| 1206 | 1206 | ||
| 1207 | if (suffix_p (found, ".elc") || (fd >= 0 && (version = safe_to_load_version (fd)) > 0)) | 1207 | int is_elc; |
| 1208 | if ((is_elc = suffix_p (found, ".elc")) != 0 | ||
| 1209 | /* version = 1 means the file is empty, in which case we can | ||
| 1210 | treat it as not byte-compiled. */ | ||
| 1211 | || (fd >= 0 && (version = safe_to_load_version (fd)) > 1)) | ||
| 1208 | /* Load .elc files directly, but not when they are | 1212 | /* Load .elc files directly, but not when they are |
| 1209 | remote and have no handler! */ | 1213 | remote and have no handler! */ |
| 1210 | { | 1214 | { |
| @@ -1231,7 +1235,7 @@ Return t if the file exists and loads successfully. */) | |||
| 1231 | /* openp already checked for newness, no point doing it again. | 1235 | /* openp already checked for newness, no point doing it again. |
| 1232 | FIXME would be nice to get a message when openp | 1236 | FIXME would be nice to get a message when openp |
| 1233 | ignores suffix order due to load_prefer_newer. */ | 1237 | ignores suffix order due to load_prefer_newer. */ |
| 1234 | if (!load_prefer_newer) | 1238 | if (!load_prefer_newer && is_elc) |
| 1235 | { | 1239 | { |
| 1236 | result = stat (SSDATA (efound), &s1); | 1240 | result = stat (SSDATA (efound), &s1); |
| 1237 | if (result == 0) | 1241 | if (result == 0) |