Mail Archives: djgpp/2006/08/17/17:17:51
Martin Str|mberg <ams AT speedy DOT ludd DOT ltu DOT se> writes:
> Doing that, it reveals to me that it seems to be some kind of
> corruption that happens somewhere in excute_cmd.c:
> execute_simple_command() or in what is called from there. A watchpoint
> tells me that it's changed in nofork.c: nofork_save_all_environment()
> and nofork_restore_all_environment(). But that does not seem to be the
> place of corruption.
It _is_ the place of corruption. The function command_substitute() does
setjmp(return_catch) before it executes the command, but it doesn't
restore the old value of return_catch afterwards, so any longjmp to
return_catch goes back inside command_substitute() even after it has
returned. This is no problem on other platforms, becuse the function
will just exit, but on DJGPP it calls nofork_restore_all_environment()
again, which pretty much destroys the environment.
--
Esa Peuha
student of mathematics at the University of Helsinki
http://www.helsinki.fi/~peuha/
- Raw text -