Browse code

socklib: fix sselect, userptr store/retrieval

Dario Rodriguez authored on 20/06/2014 10:28:04
Showing 1 changed files
... ...
@@ -362,7 +362,7 @@ sselect_getread(sselect *paramssel, int *fds, int sizefds)
362 362
         _sselect *ssel=(_sselect *)paramssel;
363 363
         if(ssel==NULL || fds==NULL || sizefds<1)
364 364
                 return(-1);
365
-        for(n=0,i=ssel->readresultreturned;i<ssel->maxfd && n<sizefds;i++) {
365
+        for(n=0,i=ssel->readresultreturned;i<=ssel->maxfd && n<sizefds;i++) {
366 366
                 if(FD_ISSET(i,&(ssel->readresult))) {
367 367
                         fds[n++]=i;
368 368
                         FD_CLR(i,&(ssel->readresult));
... ...
@@ -379,7 +379,7 @@ sselect_getwrite(sselect *paramssel, int *fds, int sizefds)
379 379
         _sselect *ssel=(_sselect *)paramssel;
380 380
         if(ssel==NULL || fds==NULL || sizefds<1)
381 381
                 return(-1);
382
-        for(n=0,i=ssel->writeresultreturned;i<ssel->maxfd && n<sizefds;i++) {
382
+        for(n=0,i=ssel->writeresultreturned;i<=ssel->maxfd && n<sizefds;i++) {
383 383
                 if(FD_ISSET(i,&(ssel->writeresult))) {
384 384
                         fds[n++]=i;
385 385
                         FD_CLR(i,&(ssel->writeresult));
... ...
@@ -397,7 +397,7 @@ sselect_getreadfiltered(sselect *paramssel, fd_set *filter, int *fds, int sizefd
397 397
         _sselect *ssel=(_sselect *)paramssel;
398 398
         if(ssel==NULL || fds==NULL || sizefds<1)
399 399
                 return(-1);
400
-        for(n=0,i=0;i<ssel->maxfd && n<sizefds;i++) {
400
+        for(n=0,i=0;i<=ssel->maxfd && n<sizefds;i++) {
401 401
                 if(FD_ISSET(i,&(ssel->readresult)) && FD_ISSET(i,filter)) {
402 402
                         fds[n++]=i;
403 403
                         FD_CLR(i,&(ssel->readresult));
... ...
@@ -413,7 +413,7 @@ sselect_getwritefiltered(sselect *paramssel, fd_set *filter, int *fds, int sizef
413 413
         _sselect *ssel=(_sselect *)paramssel;
414 414
         if(ssel==NULL || fds==NULL || sizefds<1)
415 415
                 return(-1);
416
-        for(n=0,i=0;i<ssel->maxfd && n<sizefds;i++) {
416
+        for(n=0,i=0;i<=ssel->maxfd && n<sizefds;i++) {
417 417
                 if(FD_ISSET(i,&(ssel->writeresult)) && FD_ISSET(i,filter)) {
418 418
                         fds[n++]=i;
419 419
                         FD_CLR(i,&(ssel->writeresult));
... ...
@@ -468,6 +468,7 @@ sselect_adduserptr(_sselect *ssel, int fd, void *userptr)
468 468
                         return(-1);
469 469
                 ssel->userptr=newptr;
470 470
                 memset(ssel->userptr+ssel->sizeuserptr,sizeof(void *)*(newsize-ssel->sizeuserptr),0);
471
+                ssel->sizeuserptr=newsize;
471 472
         }
472 473
         ssel->userptr[fd]=userptr;
473 474
         return(0);