[comp.lang.perl] Problem with select in patchlevel 37

mooring@grimoire (Ed Mooring) (10/23/90)

The select() operator in perl3.0 pl3[67] is broken.  The fourth argument
(when it is used as the BSD select() function), is never evaluated, nor
is it passed to the OS.  I believe that a change to consarg.c uncovered
an old bug in arg.h.  The fix I came up with follows as a context diff:
*** arg.h	Mon Oct 22 17:34:19 1990
--- arg.h.old	Mon Oct 22 17:33:51 1990
***************
*** 896,902 ****
  	A(1,1,0),	/* ACCEPT */
  	A(1,1,3),	/* SEND */
  	A(1,1,3),	/* RECV */
! 	A5(1,1,1,1,0),	/* SSELECT */
  	A(1,1,1),	/* SOCKPAIR */
  	A(0,3,0),	/* DBSUBR */
  	A(1,0,0),	/* DEFINED */
--- 896,902 ----
  	A(1,1,0),	/* ACCEPT */
  	A(1,1,3),	/* SEND */
  	A(1,1,3),	/* RECV */
! 	A(1,1,1),	/* SSELECT */
  	A(1,1,1),	/* SOCKPAIR */
  	A(0,3,0),	/* DBSUBR */
  	A(1,0,0),	/* DEFINED */
***************
I've tested it a little, and it seems to work, but caveat implementor
as usual.

Ed Mooring (mooring@tymix.tymnet.com 408-922-7504)

lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (10/23/90)

In article <3896@tymix.UUCP> mooring@grimoire (Ed Mooring) writes:
: The select() operator in perl3.0 pl3[67] is broken.  The fourth argument
: (when it is used as the BSD select() function), is never evaluated, nor
: is it passed to the OS.  I believe that a change to consarg.c uncovered
: an old bug in arg.h.  The fix I came up with follows as a context diff:
: *** arg.h	Mon Oct 22 17:34:19 1990
: --- arg.h.old	Mon Oct 22 17:33:51 1990
: ***************
: *** 896,902 ****
:   	A(1,1,0),	/* ACCEPT */
:   	A(1,1,3),	/* SEND */
:   	A(1,1,3),	/* RECV */
: ! 	A5(1,1,1,1,0),	/* SSELECT */
:   	A(1,1,1),	/* SOCKPAIR */
:   	A(0,3,0),	/* DBSUBR */
:   	A(1,0,0),	/* DEFINED */
: --- 896,902 ----
:   	A(1,1,0),	/* ACCEPT */
:   	A(1,1,3),	/* SEND */
:   	A(1,1,3),	/* RECV */
: ! 	A(1,1,1),	/* SSELECT */
:   	A(1,1,1),	/* SOCKPAIR */
:   	A(0,3,0),	/* DBSUBR */
:   	A(1,0,0),	/* DEFINED */
: ***************
: I've tested it a little, and it seems to work, but caveat implementor
: as usual.

That's the correct patch for that, and it will be in patch38, but you
should realize that recv, socket, socketpair, and setsockopt are broken
the same way.  I suppose I could blame it all on Chip, but I'll refrain...

Larry