diff --git a/C/modules.c b/C/modules.c index 5611ee11b..8a62419f6 100644 --- a/C/modules.c +++ b/C/modules.c @@ -55,6 +55,9 @@ LookupModule(Term a) if (ModuleName[i] == a) return (i); ModuleName[i = NoOfModules++] = a; + if (NoOfModules == MaxModules) { + Error(SYSTEM_ERROR,a,"number of modules overflowed"); + } return (i); } diff --git a/C/tracer.c b/C/tracer.c index 1b899a345..93be90e8d 100644 --- a/C/tracer.c +++ b/C/tracer.c @@ -112,7 +112,7 @@ low_level_trace(yap_low_level_port port, PredEntry *pred, CELL *args) /* extern int gc_calls; */ vsc_count++; - /* if (vsc_count < 84600) return; */ + /* if (vsc_count < 3887174000LL) return; */ /* if (vsc_count == 4376) { printf("Here I go\n"); diff --git a/m4/Yatom.h.m4 b/m4/Yatom.h.m4 index 40b36d1a3..3c33fdec8 100644 --- a/m4/Yatom.h.m4 +++ b/m4/Yatom.h.m4 @@ -386,7 +386,7 @@ typedef enum { DBWithRefs = 0x40 } db_term_flags; -#define MaxModules 255 +#define MaxModules 256 typedef struct { Prop NextOfPE; /* used to chain properties */ diff --git a/pl/boot.yap b/pl/boot.yap index 1b276c907..92c3a1d01 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -983,9 +983,10 @@ break :- '$get_value'('$break',BL), NBL is BL+1, '$change_alias_to_stream'('$loop_stream',Stream), repeat, ( '$current_stream'(_,_,Stream) -> true - ; '$current_module'(_,OldModule), '$abort_loop'(Stream) + ; '$abort_loop'(Stream) ), prompt('| '), prompt(_,'| '), + '$current_module'(OldModule), '$system_catch'('$enter_command'(Stream,Status), OldModule, Error, user:'$LoopError'(Error)), !.