Mercurial > emacs
comparison src/lread.c @ 102267:12ffc72c0bbc
* lread.c (Fload): Stop checking Vloads_in_progress and signal
error as soon as a recursive load is detected.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Wed, 25 Feb 2009 12:47:23 +0000 |
parents | e038c1a8307c |
children | d7ea9e8841d3 |
comparison
equal
deleted
inserted
replaced
102266:23cb90d39b97 | 102267:12ffc72c0bbc |
---|---|
1111 the general case; the second load may do something different. */ | 1111 the general case; the second load may do something different. */ |
1112 { | 1112 { |
1113 int count = 0; | 1113 int count = 0; |
1114 Lisp_Object tem; | 1114 Lisp_Object tem; |
1115 for (tem = Vloads_in_progress; CONSP (tem); tem = XCDR (tem)) | 1115 for (tem = Vloads_in_progress; CONSP (tem); tem = XCDR (tem)) |
1116 if (!NILP (Fequal (found, XCAR (tem)))) | 1116 if (!NILP (Fequal (found, XCAR (tem))) && (++count > 3)) |
1117 count++; | 1117 { |
1118 if (count > 3) | 1118 if (fd >= 0) |
1119 { | 1119 emacs_close (fd); |
1120 if (fd >= 0) | 1120 signal_error ("Recursive load", Fcons (found, Vloads_in_progress)); |
1121 emacs_close (fd); | 1121 } |
1122 signal_error ("Recursive load", Fcons (found, Vloads_in_progress)); | |
1123 } | |
1124 record_unwind_protect (record_load_unwind, Vloads_in_progress); | 1122 record_unwind_protect (record_load_unwind, Vloads_in_progress); |
1125 Vloads_in_progress = Fcons (found, Vloads_in_progress); | 1123 Vloads_in_progress = Fcons (found, Vloads_in_progress); |
1126 } | 1124 } |
1127 | 1125 |
1128 /* Get the name for load-history. */ | 1126 /* Get the name for load-history. */ |