diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2017-01-11 14:21:31 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2017-01-12 09:10:30 +0100 |
commit | e5cadbfdcdd8b06932a9503b3c72511b68f03a60 (patch) | |
tree | f2aea392034de96140b720f71ba9fa177348f6cc /winsup/cygwin/path.cc | |
parent | e0477b4a0ba2b842d4f81350f7fa9a03b1f3d27b (diff) | |
download | cygnal-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.cc | 4 |
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. |