summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-01-11 14:21:31 +0100
committerCorinna Vinschen <corinna@vinschen.de>2017-01-12 09:10:30 +0100
commite5cadbfdcdd8b06932a9503b3c72511b68f03a60 (patch)
treef2aea392034de96140b720f71ba9fa177348f6cc /winsup/cygwin/path.cc
parente0477b4a0ba2b842d4f81350f7fa9a03b1f3d27b (diff)
downloadcygnal-e5cadbfdcdd8b06932a9503b3c72511b68f03a60.tar.gz
cygnal-e5cadbfdcdd8b06932a9503b3c72511b68f03a60.tar.bz2
cygnal-e5cadbfdcdd8b06932a9503b3c72511b68f03a60.zip
FAST_CWD: adjust the initial search scope
A *very* recent Windows build adds more code to the preamble of RtlGetCurrentDirectory_U() so that the previous heuristic failed to find the call to the locking routine. This only affects the 64-bit version of ntdll, where the 0xe8 byte is now found at offset 40, not the 32-bit version. However, let's just double the area we search for said byte for good measure. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index c3b304ab5..ee7636dbf 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -4034,7 +4034,7 @@ find_fast_cwd_pointer ()
if (!get_dir || !ent_crit)
return NULL;
/* Search first relative call instruction in RtlGetCurrentDirectory_U. */
- const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 40);
+ const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 80);
if (!rcall)
return NULL;
/* Fetch offset from instruction and compute address of called function.
@@ -4133,7 +4133,7 @@ find_fast_cwd_pointer ()
if (!get_dir || !ent_crit)
return NULL;
/* Search first relative call instruction in RtlGetCurrentDirectory_U. */
- const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 32);
+ const uint8_t *rcall = (const uint8_t *) memchr (get_dir, 0xe8, 64);
if (!rcall)
return NULL;
/* Fetch offset from instruction and compute address of called function.