summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-04-26 05:13:32 +0000
committerChristopher Faylor <me@cgf.cx>2000-04-26 05:13:32 +0000
commit55fc91b9d62bec29deaba79e4adb4e85c35cc306 (patch)
tree149fe493e1a30834ca2dd732e5f30d01f0675c91 /winsup/cygwin/exceptions.cc
parent47eaa6c421031e7f908eb352ebe6905b2d8bcb27 (diff)
downloadcygnal-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.cc9
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