protect against files that consult themselves
This commit is contained in:
parent
3a9ecf929e
commit
a72e66d2ae
@ -471,6 +471,7 @@ true :- true.
|
|||||||
nb_setval('$endif',off),
|
nb_setval('$endif',off),
|
||||||
nb_setval('$initialization_goals',off),
|
nb_setval('$initialization_goals',off),
|
||||||
nb_setval('$included_file',[]),
|
nb_setval('$included_file',[]),
|
||||||
|
nb_setval('$loop_streams',[]),
|
||||||
\+ '$undefined'('$init_preds',prolog),
|
\+ '$undefined'('$init_preds',prolog),
|
||||||
'$init_preds',
|
'$init_preds',
|
||||||
fail.
|
fail.
|
||||||
|
@ -652,11 +652,19 @@ db_files(Fs) :-
|
|||||||
'$extract_minus'([-F|Fs], [F|MFs]) :-
|
'$extract_minus'([-F|Fs], [F|MFs]) :-
|
||||||
'$extract_minus'(Fs, MFs).
|
'$extract_minus'(Fs, MFs).
|
||||||
|
|
||||||
|
'$do_lf'(_ContextModule, Stream, _UserFile, _File, _TOpts) :-
|
||||||
|
stream_property(Stream, file_name(Y)),
|
||||||
|
b_getval('$loop_streams',Sts0),
|
||||||
|
lists:member(Stream0, Sts0),
|
||||||
|
stream_property(Stream0, file_name(Y)),
|
||||||
|
!.
|
||||||
'$do_lf'(ContextModule, Stream, UserFile, File, TOpts) :-
|
'$do_lf'(ContextModule, Stream, UserFile, File, TOpts) :-
|
||||||
prompt1(': '), prompt(_,' '),
|
prompt1(': '), prompt(_,' '),
|
||||||
stream_property(OldStream, alias(loop_stream) ),
|
stream_property(OldStream, alias(loop_stream) ),
|
||||||
'$lf_opt'(encoding, TOpts, Encoding),
|
'$lf_opt'(encoding, TOpts, Encoding),
|
||||||
set_stream( Stream, [alias(loop_stream), encoding(Encoding)] ),
|
set_stream( Stream, [alias(loop_stream), encoding(Encoding)] ),
|
||||||
|
'$nb_getval'('$loop_streams',Sts0, Sts0=[]),
|
||||||
|
nb_setval('$loop_streams',[Stream|Sts0]),
|
||||||
'$lf_opt'('$context_module', TOpts, ContextModule),
|
'$lf_opt'('$context_module', TOpts, ContextModule),
|
||||||
'$lf_opt'(reexport, TOpts, Reexport),
|
'$lf_opt'(reexport, TOpts, Reexport),
|
||||||
'$lf_opt'(qcompile, TOpts, QCompiling),
|
'$lf_opt'(qcompile, TOpts, QCompiling),
|
||||||
@ -704,6 +712,7 @@ db_files(Fs) :-
|
|||||||
H is heapused-H0, '$cputime'(TF,_), T is TF-T0,
|
H is heapused-H0, '$cputime'(TF,_), T is TF-T0,
|
||||||
'$early_print'(informational, loaded(EndMsg, File, Mod, T, H)),
|
'$early_print'(informational, loaded(EndMsg, File, Mod, T, H)),
|
||||||
'$end_consult',
|
'$end_consult',
|
||||||
|
nb_setval('$loop_streams',Sts0),
|
||||||
'$q_do_save_file'(File, UserFile, TOpts ),
|
'$q_do_save_file'(File, UserFile, TOpts ),
|
||||||
(
|
(
|
||||||
Reconsult = reconsult ->
|
Reconsult = reconsult ->
|
||||||
@ -728,6 +737,7 @@ db_files(Fs) :-
|
|||||||
% format( 'O=~w~n', [Mod=UserFile] ),
|
% format( 'O=~w~n', [Mod=UserFile] ),
|
||||||
!.
|
!.
|
||||||
|
|
||||||
|
|
||||||
'$q_do_save_file'(File, UserF, TOpts ) :-
|
'$q_do_save_file'(File, UserF, TOpts ) :-
|
||||||
'$lf_opt'(qcompile, TOpts, QComp),
|
'$lf_opt'(qcompile, TOpts, QComp),
|
||||||
'$lf_opt'('$source_pos', TOpts, Pos),
|
'$lf_opt'('$source_pos', TOpts, Pos),
|
||||||
|
Reference in New Issue
Block a user