diff options
author | Christopher Faylor <me@cgf.cx> | 2000-04-26 05:13:32 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-04-26 05:13:32 +0000 |
commit | 55fc91b9d62bec29deaba79e4adb4e85c35cc306 (patch) | |
tree | 149fe493e1a30834ca2dd732e5f30d01f0675c91 /winsup/cygwin/exceptions.cc | |
parent | 47eaa6c421031e7f908eb352ebe6905b2d8bcb27 (diff) | |
download | cygnal-55fc91b9d62bec29deaba79e4adb4e85c35cc306.tar.gz cygnal-55fc91b9d62bec29deaba79e4adb4e85c35cc306.tar.bz2 cygnal-55fc91b9d62bec29deaba79e4adb4e85c35cc306.zip |
* exceptions.cc (interruptible): Allocate slightly more space for directory
name check. Windows 95 seems to null-terminate the directory otherwise.
(interrupt_on_return): Issue a fatal error if we can't find the caller's stack.
* spawn.cc (find_exec): Accept a path_conv argument rather than a buffer so
that the caller can find things out about a translated path.
(perhaps_suffix): Ditto.
(spawn_guts): Allocate path_conv stuff here so that we can find out stuff about
the translated path (this is work in progress).
* environ.cc (environ_init): Accept an as-yet unused argument indicating
whether we were invoked from a cygwin parent or not.
(winenv): Ditto.
(posify): Accept an argument indicating whether the path has already been
translated.
* dlfcn.cc (check_access): Provide a path_conv buffer to find_exec.
* exec.cc (sexecvpe): Ditto.
* path.cc (path_conv::check): Rename from path_conv::path_conv.
(mount_item::getmntent): Recognize "Cygwin executable" bit.
(symlink_info::check): Remove debugging statements.
* path.h (class path_conv): Add iscygexec method. Rewrite constructor to call
"check" method to allow multiple operations on a path_conv variable.
* pinfo.cc (pinfo_init): Pass argument to environ_init.
* shared.h: Bump PROC_MAGIC.
* winsup.h: Reflect above changes to function arguments.
* include/sys/mount.h: Add MOUNT_CYGWIN_EXEC type.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r-- | winsup/cygwin/exceptions.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index f82f6364a..dea040659 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -568,13 +568,13 @@ interruptible (DWORD pc) if (!VirtualQuery ((LPCVOID) pc, &m, sizeof m)) sigproc_printf ("couldn't get memory info, %E"); - char *checkdir = (char *) alloca (windows_system_directory_length); + char *checkdir = (char *) alloca (windows_system_directory_length + 2); # define h ((HMODULE) m.AllocationBase) if (h == user_data->hmodule) res = 1; else if (h == cygwin_hmodule) res = 0; - else if (!GetModuleFileName (h, checkdir, windows_system_directory_length)) + else if (!GetModuleFileName (h, checkdir, windows_system_directory_length + 2)) res = 0; else res = !strncasematch (windows_system_directory, checkdir, @@ -642,10 +642,11 @@ interrupt_on_return (DWORD ebp, int sig, struct sigaction& siga, void *handler) interrupt_setup (sig, siga, handler, *addr_retaddr, addr_retaddr); *addr_retaddr = (DWORD) sigdelayed; } - break; + return 1; } - return 1; + api_fatal ("couldn't send signal %d", sig); + return 0; } extern "C" void __stdcall |