aboutsummaryrefslogtreecommitdiff
path: root/file_io/os2
diff options
context:
space:
mode:
authorBrian Havard <bjh@apache.org>2010-04-06 18:45:48 +0000
committerBrian Havard <bjh@apache.org>2010-04-06 18:45:48 +0000
commit3ae12525008fa0e62edf4c20ffc1c11dceabd8e2 (patch)
treef8bff85fb005dc9e502b626b53450f2f1523402c /file_io/os2
parenta50da4ab229200aa3cea902706b125724d0eb709 (diff)
downloadapr-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.c4
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);
}