--- IO-AIO/AIO.xs 2009/04/19 13:15:55 1.136 +++ IO-AIO/AIO.xs 2009/04/19 13:19:57 1.137 @@ -669,11 +669,11 @@ PPCODE: { STRLEN svlen; + int fd = extract_fd (fh, ix == EIO_WRITE); char *svptr = SvPVbyte (data, svlen); UV len = SvUV (length); - int fd; - if (SvTYPE (data) > SVt_PVMG) + if (SvTYPE (data) > SVt_PVMG || SvROK (data)) croak ("illegal data argument '%s', must be plain scalar string", SvPV_nolen (data)); SvUPGRADE (data, SVt_PV); @@ -700,8 +700,6 @@ if (len < 0) croak ("length must not be negative"); - fd = extract_fd (fh, ix == EIO_WRITE); - { dREQ;