You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2009/10/26 15:02:41 UTC

svn commit: r829803 - in /apr/apr/branches/1.3.x: CHANGES poll/unix/port.c

Author: trawick
Date: Mon Oct 26 14:02:41 2009
New Revision: 829803

URL: http://svn.apache.org/viewvc?rev=829803&view=rev
Log:
merge r829789 from trunk:

Work around bogus return code in some circumstances with 32-bit
port_getn() on Solaris 10 x86.

AFAICT this problem only occurs when the return code should be
zero, so changing the return code check should be sufficient.

APR 1.3.8 wasn't affected.

PR: 48029

Modified:
    apr/apr/branches/1.3.x/CHANGES
    apr/apr/branches/1.3.x/poll/unix/port.c

Modified: apr/apr/branches/1.3.x/CHANGES
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/CHANGES?rev=829803&r1=829802&r2=829803&view=diff
==============================================================================
--- apr/apr/branches/1.3.x/CHANGES [utf-8] (original)
+++ apr/apr/branches/1.3.x/CHANGES [utf-8] Mon Oct 26 14:02:41 2009
@@ -1,6 +1,11 @@
                                                      -*- coding: utf-8 -*-
 Changes for APR 1.3.10
 
+  *) Solaris pollset support: Fix a 1.3.9 regression in apr_pollset_poll()
+     which resulted in invalid return codes from the APR function.  A work-
+     around was needed for bad return codes from 32-bit port_getn() on 
+     Solaris 10 x86.  PR 48029.  [Jeff Trawick]
+
   *) The implementation of expand_array() in tables/apr_hash.c allocates
      a new bucket array, without making any attempt to release the memory
      allocated for the previous bucket array. That wastes memory: if the

Modified: apr/apr/branches/1.3.x/poll/unix/port.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.3.x/poll/unix/port.c?rev=829803&r1=829802&r2=829803&view=diff
==============================================================================
--- apr/apr/branches/1.3.x/poll/unix/port.c (original)
+++ apr/apr/branches/1.3.x/poll/unix/port.c Mon Oct 26 14:02:41 2009
@@ -101,8 +101,11 @@
     }
 
     ret = port_getn(port, list, max, nget, tvptr);
+    /* Note: 32-bit port_getn() on Solaris 10 x86 returns large negative 
+     * values instead of 0 when returning immediately.
+     */
 
-    if (ret < 0) {
+    if (ret == -1) {
         rv = apr_get_netos_error();
 
         switch(rv) {