fix debugger

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1795 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2007-02-13 11:26:17 +00:00
parent 73a30641a0
commit 8edd35f303
2 changed files with 17 additions and 11 deletions

View File

@ -2162,12 +2162,17 @@ static Int p_putenv(void)
"second arg to putenv/2"); "second arg to putenv/2");
return(FALSE); return(FALSE);
} else s2 = RepAtom(AtomOfTerm(t2))->StrOfAE; } else s2 = RepAtom(AtomOfTerm(t2))->StrOfAE;
p0 = p = Yap_AllocAtomSpace(strlen(s)+strlen(s2)+3); while (!(p0 = p = Yap_AllocAtomSpace(strlen(s)+strlen(s2)+3))) {
if (!Yap_growheap(FALSE, MinHeapGap, NULL)) {
Yap_Error(OUT_OF_HEAP_ERROR, TermNil, Yap_ErrorMessage);
return FALSE;
}
}
while ((*p++ = *s++) != '\0'); while ((*p++ = *s++) != '\0');
p[-1] = '='; p[-1] = '=';
while ((*p++ = *s2++) != '\0'); while ((*p++ = *s2++) != '\0');
if (putenv(p0) == 0) if (putenv(p0) == 0)
return(TRUE); return TRUE;
#if HAVE_STRERROR #if HAVE_STRERROR
Yap_Error(OPERATING_SYSTEM_ERROR, TermNil, Yap_Error(OPERATING_SYSTEM_ERROR, TermNil,
"in putenv(%s)", strerror(errno), p0); "in putenv(%s)", strerror(errno), p0);
@ -2175,11 +2180,11 @@ static Int p_putenv(void)
Yap_Error(OPERATING_SYSTEM_ERROR, TermNil, Yap_Error(OPERATING_SYSTEM_ERROR, TermNil,
"in putenv(%s)", p0); "in putenv(%s)", p0);
#endif #endif
return (FALSE); return FALSE;
#else #else
Yap_Error(SYSTEM_ERROR, TermNil, Yap_Error(SYSTEM_ERROR, TermNil,
"putenv not available in this configuration"); "putenv not available in this configuration");
return (FALSE); return FALSE;
#endif #endif
} }

View File

@ -166,17 +166,18 @@ read_sig.
'$protected_env' :- '$protected_env' :-
yap_hacks:current_continuations([Env|Envs]), yap_hacks:current_continuations([Env|Envs]),
%'$envs'(Envs),
yap_hacks:continuation(Env,_,Addr,_), yap_hacks:continuation(Env,_,Addr,_),
%'$envs'(Envs, Addr),
'$skim_envs'(Envs,Addr,Mod,Name,Arity), '$skim_envs'(Envs,Addr,Mod,Name,Arity),
\+ '$external_call_seen'(Mod,Name,Arity). \+ '$external_call_seen'(Mod,Name,Arity).
% '$envs'([Env|Envs]) :- '$envs'([Env|Envs], Addr0) :-
% '$env_info'(Env,Mod0,Name0,Arity0), yap_hacks:cp_to_predicate(Addr0,Mod0,Name0,Arity0,ClId),
% format(user_error,'~a:~w/~w~n',[Mod0,Name0,Arity0]), format(user_error,'~a:~w/~w ~d~n',[Mod0,Name0,Arity0,ClId]),
% '$envs'(Envs). yap_hacks:continuation(Env,_,Addr,_),
% '$envs'([]). '$envs'(Envs, Addr).
'$envs'([], _) :- format(user_error,'*****done*****~n',[]).
'$skim_envs'([Env|Envs],Addr0,Mod,Name,Arity) :- '$skim_envs'([Env|Envs],Addr0,Mod,Name,Arity) :-
yap_hacks:cp_to_predicate(Addr0, Mod0, Name0, Arity0, _ClId), yap_hacks:cp_to_predicate(Addr0, Mod0, Name0, Arity0, _ClId),
@ -192,6 +193,6 @@ read_sig.
'$allowed'(Name,Arity). '$allowed'(Name,Arity).
'$external_call_seen'(_,_,_). '$external_call_seen'(_,_,_).
'$allowed'('$spycall',3). '$allowed'('$spycall',4).
'$allowed'('$query',2). '$allowed'('$query',2).