diff options
author | Brian Havard <bjh@apache.org> | 2010-04-06 18:45:48 +0000 |
---|---|---|
committer | Brian Havard <bjh@apache.org> | 2010-04-06 18:45:48 +0000 |
commit | 3ae12525008fa0e62edf4c20ffc1c11dceabd8e2 (patch) | |
tree | f8bff85fb005dc9e502b626b53450f2f1523402c /file_io/os2 | |
parent | a50da4ab229200aa3cea902706b125724d0eb709 (diff) | |
download | apr-3ae12525008fa0e62edf4c20ffc1c11dceabd8e2.tar.gz apr-3ae12525008fa0e62edf4c20ffc1c11dceabd8e2.zip |
OS/2: Fix invalid parameter error in apr_file_inherit_set/unset().
DosSetFHState() only accepts a subset of flags returned by DosQueryFHState()
and all others must be zero so mask out the unsupported flags.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@931265 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'file_io/os2')
-rw-r--r-- | file_io/os2/open.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/file_io/os2/open.c b/file_io/os2/open.c index 38cc40e9e..c9d32deb9 100644 --- a/file_io/os2/open.c +++ b/file_io/os2/open.c @@ -284,7 +284,8 @@ APR_DECLARE(apr_status_t) apr_file_inherit_set(apr_file_t *thefile) rv = DosQueryFHState(thefile->filedes, &state); if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) != 0) { - rv = DosSetFHState(thefile->filedes, state & ~OPEN_FLAGS_NOINHERIT); + state &= OPEN_FLAGS_WRITE_THROUGH|OPEN_FLAGS_FAIL_ON_ERROR|OPEN_FLAGS_NO_CACHE; + rv = DosSetFHState(thefile->filedes, state); } return APR_FROM_OS_ERROR(rv); @@ -300,6 +301,7 @@ APR_DECLARE(apr_status_t) apr_file_inherit_unset(apr_file_t *thefile) rv = DosQueryFHState(thefile->filedes, &state); if (rv == 0 && (state & OPEN_FLAGS_NOINHERIT) == 0) { + state &= OPEN_FLAGS_WRITE_THROUGH|OPEN_FLAGS_FAIL_ON_ERROR|OPEN_FLAGS_NO_CACHE; rv = DosSetFHState(thefile->filedes, state | OPEN_FLAGS_NOINHERIT); } |