[X2Go-Commits] [nx-libs] 24/29: workaround for Mac OS X 10.5 (051_nxcomp_macos105-fdisset.full+lite.patch(

git-admin at x2go.org git-admin at x2go.org
Tue Feb 10 05:21:47 CET 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x
in repository nx-libs.

commit 9054786947b2f6b82078f6e5f965c3b0b629c880
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Mon Feb 9 15:41:35 2015 +0100

    workaround for Mac OS X 10.5 (051_nxcomp_macos105-fdisset.full+lite.patch(
    
     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.
---
 .../051_nxcomp_macos105-fdisset.full+lite.patch    |   82 --------------------
 debian/patches/series                              |    1 -
 nxcomp/Agent.h                                     |   28 +++++--
 3 files changed, 20 insertions(+), 91 deletions(-)

diff --git a/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch b/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch
deleted file mode 100644
index 6b78a6b..0000000
--- a/debian/patches/051_nxcomp_macos105-fdisset.full+lite.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-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 at 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
diff --git a/debian/patches/series b/debian/patches/series
index 2c9811e..214bf6a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,3 @@
-051_nxcomp_macos105-fdisset.full+lite.patch
 052_nxcomp_macos10-nxauth-location.full+lite.patch
 053_nx-X11_no-xcomp1-install-target.full.patch
 054_nx-X11_ppc64-ftbfs.full.patch
diff --git a/nxcomp/Agent.h b/nxcomp/Agent.h
index fac5acd..ded344d 100644
--- a/nxcomp/Agent.h
+++ b/nxcomp/Agent.h
@@ -149,30 +149,38 @@ class Agent
 
   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 @@ class Agent
 
   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

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list