diff options
author | Mihai Moldovan <ionic@ionic.de> | 2012-02-29 15:56:49 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2012-02-29 15:59:04 +0100 |
commit | 655173ff215dde1a167193eafe29bfc955a19561 (patch) | |
tree | 7d4b8d7f906cb8b7bbe14e70b2ac734c96104c68 /debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch | |
parent | be86627adf0392f94d70ad28cb9c6867b3bef0f5 (diff) | |
download | nx-libs-655173ff215dde1a167193eafe29bfc955a19561.tar.gz nx-libs-655173ff215dde1a167193eafe29bfc955a19561.tar.bz2 nx-libs-655173ff215dde1a167193eafe29bfc955a19561.zip |
Add patch: 051_nxcomp_macos105-fdisset.full+lite.patch, work around issue in Mac OS X 10.5 SDK.
Diffstat (limited to 'debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch')
-rw-r--r-- | debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch b/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch new file mode 100644 index 000000000..86f24e837 --- /dev/null +++ b/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch @@ -0,0 +1,82 @@ +Description: workaround for Mac OS X 10.5 + The Mac OS X 10.5 SDK requires the second argument of FD_ISSET to be + writeable, although it does only access the data. Given that we have a + const pointer for a const struct, copy and pass that. + . + Note that this is merely a workaround for OS X 10.5, as 10.6 and later + define the second argument of FD_ISSET as const struct const *foo, too. + . + It is safe, as data is accessed read-only by FD_ISSET, even on 10.5. +Forward: pending +Author: Mihai Moldovan <ionic@ionic.de> +--- + nxcomp/Agent.h | 28 ++++++++++++++++++++-------- + 1 files changed, 20 insertions(+), 8 deletions(-) + +--- a/nxcomp/Agent.h ++++ b/nxcomp/Agent.h +@@ -149,30 +149,38 @@ + + int remoteCanRead(const fd_set * const readSet) + { ++ // OS X 10.5 requires the second argument to be non-const, so copy readSet. ++ // It's safe though, as FD_ISSET does not operate on it. ++ fd_set readWorkSet = *readSet; ++ + #if defined(TEST) || defined(INFO) + *logofs << "Agent: remoteCanRead() is " << +- (FD_ISSET(remoteFd_, readSet) && transport_ -> dequeuable() != 0) +- << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_, readSet) ++ (FD_ISSET(remoteFd_, readWorkSet) && transport_ -> dequeuable() != 0) ++ << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_, readWorkSet) + << " and dequeuable " << transport_ -> dequeuable() + << ".\n" << logofs_flush; + #endif + +- return (FD_ISSET(remoteFd_, readSet) && ++ return (FD_ISSET(remoteFd_, readWorkSet) && + transport_ -> dequeuable() != 0); + } + + int remoteCanWrite(const fd_set * const writeSet) + { ++ // OS X 10.5 requires the second argument to be non-const, so copy writeSet. ++ // It's safe though, as FD_ISSET does not operate on it. ++ fd_set writeWorkSet = *writeSet; ++ + #if defined(TEST) || defined(INFO) + *logofs << "Agent: remoteCanWrite() is " << +- (FD_ISSET(remoteFd_, writeSet) && transport_ -> ++ (FD_ISSET(remoteFd_, writeWorkSet) && transport_ -> + queuable() != 0 && canRead_ == 1) << " with FD_ISSET() " +- << (int) FD_ISSET(remoteFd_, writeSet) << " queueable " ++ << (int) FD_ISSET(remoteFd_, writeWorkSet) << " queueable " + << transport_ -> queuable() << " channel can read " + << canRead_ << ".\n" << logofs_flush; + #endif + +- return (FD_ISSET(remoteFd_, writeSet) && ++ return (FD_ISSET(remoteFd_, writeWorkSet) && + transport_ -> queuable() != 0 && + canRead_ == 1); + } +@@ -203,13 +211,17 @@ + + int proxyCanRead(const fd_set * const readSet) + { ++ // OS X 10.5 requires the second argument to be non-const, so copy readSet. ++ // It's safe though, as FD_ISSET does not operate on it. ++ fd_set readWorkSet = *readSet; ++ + #if defined(TEST) || defined(INFO) + *logofs << "Agent: proxyCanRead() is " +- << ((int) FD_ISSET(proxy -> getFd(), readSet) ++ << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet) + << ".\n" << logofs_flush; + #endif + +- return (FD_ISSET(proxy -> getFd(), readSet)); ++ return (FD_ISSET(proxy -> getFd(), &readWorkSet)); + } + + int enqueueData(const char *data, const int size) const |