Changeset a5ef7ce0f308caca8b7a41d66e0aae4c653344b1

Show
Ignore:
Timestamp:
12/02/07 18:31:53 (2 years ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1171301513 +0000
git-parent:

[1c3bc8974c3b0acf191be3e5ebaf4c00634411fa]

git-author:
Rémi Denis-Courmont <rem@videolan.org> 1171301513 +0000
Message:

Use poll() always and fix terrible bug due to #ifdefs

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/network/io.c

    rbd20527 ra5ef7ce  
    287287        unsigned i; 
    288288        ssize_t n; 
    289 #ifdef HAVE_POLL 
    290289        struct pollfd ufd[fdc]; 
    291 #else 
    292         int maxfd = -1; 
    293         fd_set set; 
    294 #endif 
    295290 
    296291        int delay_ms = 500; 
     
    304299        } 
    305300 
    306 #ifdef HAVE_POLL 
    307301        memset (ufd, 0, sizeof (ufd)); 
    308302 
     
    314308 
    315309        n = poll( ufd, fdc, delay_ms ); 
    316 #else 
    317         FD_ZERO (&set); 
    318  
    319         for( i = 0; i < fdc; i++ ) 
    320         { 
    321 #if !defined(WIN32) && !defined(UNDER_CE) 
    322             if( fdv[i] >= FD_SETSIZE ) 
    323             { 
    324                 /* We don't want to overflow select() fd_set */ 
    325                 msg_Err( p_this, "select set overflow" ); 
    326                 return -1; 
    327             } 
    328 #endif 
    329             FD_SET( fdv[i], &set ); 
    330             if( fdv[i] > maxfd ) 
    331                 maxfd = fdv[i]; 
    332         } 
    333  
    334         n = select( maxfd + 1, &set, NULL, NULL, 
    335                     (wait_ms == -1) ? NULL 
    336                                   : &(struct timeval){ 0, delay_ms * 1000 } ); 
    337 #endif 
    338310        if( n == -1 ) 
    339311            goto error; 
     
    346318        for (i = 0;; i++) 
    347319        { 
    348 #ifdef HAVE_POLL 
    349320            if ((i_total > 0) && (ufd[i].revents & POLLERR)) 
    350321                return i_total; // error will be dequeued on next run 
    351322 
    352323            if ((ufd[i].revents & POLLIN) == 0) 
    353 #else 
    354             if (!FD_ISSET (fdv[i], &set)) 
    355324                continue; 
    356 #endif 
     325 
    357326            fdc = 1; 
    358327            fdv += i;