Commit 655173ff authored by Mihai Moldovan's avatar Mihai Moldovan Committed by Mike Gabriel

Add patch: 051_nxcomp_macos105-fdisset.full+lite.patch, work around issue in Mac OS X 10.5 SDK.

parent be86627a
......@@ -5,6 +5,10 @@ nx-libs (2:3.5.0.12-0) UNRELEASED; urgency=low
packaging. Test for Makefiles in subfolders before calling them.
Fixes build failure during ,,make distclean'' calls.
[ Mihai Moldovan ]
* Add patch: 051_nxcomp_macos105-fdisset.full+lite.patch, work around
issue in Mac OS X 10.5 SDK.
[ Oleksandr Shneyder ]
* Create patch: 203_nxagent_disable-rootless-exit.full.patch.
Add command line argument "-norootlessexit".
......
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
......@@ -25,6 +25,7 @@
030_nx-X11_configure-args.full.patch
031_nx-X11_parallel-make.full.patch
032_no-x11r6.full.patch
051_nxcomp_macos105-fdisset.full+lite.patch
101_nxagent_set-rgb-path.full.patch
102_xserver-xext_set-securitypolicy-path.full.patch
103_nxagent_set-X0-config-path.full.patch
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment