Branch Coverage

2008.xs
Criterion Covered Total %
branch 288 856 33.6


line true false branch
300 0 5 PUSH_INT_OR_PV(st->st_size, st_tmp.st_size);
301 0 5 PUSH_INT_OR_PV(st->st_atime, st_tmp.st_atime);
302 0 5 PUSH_INT_OR_PV(st->st_mtime, st_tmp.st_mtime);
304 0 5 PUSH_INT_OR_PV(st->st_ctime, st_tmp.st_ctime);
310 0 5 PUSH_INT_OR_PV(st->st_blksize, st_tmp.st_blksize);
311 0 5 PUSH_INT_OR_PV(st->st_blocks, st_tmp.st_blocks);
317 0 5 PUSH_INT_OR_PV(st->st_atim.tv_nsec, st_tmp.st_atim.tv_nsec);
318 0 5 PUSH_INT_OR_PV(st->st_mtim.tv_nsec, st_tmp.st_mtim.tv_nsec);
320 0 5 PUSH_INT_OR_PV(st->st_ctim.tv_nsec, st_tmp.st_ctim.tv_nsec);
363 0 2 if (!buf) {
369 1 1 if (dirfd == NULL)
380 2 0 if (linklen != -1) {
381 2 0 if ((size_t)linklen < bufsize) {
386 0 0 else if (errno != ERANGE) {
396 0 0 if (buf == NULL) {
409 0 0 if (iov)
410 0 0 for (i = 0; i < cnt; i++)
411 0 0 if (iov[i].iov_base)
438 4 0 for (i = 0; i < 2; i++) {
439 4 0 if (SvROK(buffers)) {
441 4 0 if (SvTYPE(buffers) == SVt_PVAV)
443 0 0 if (i == 0)
449 0 4 Size_t iovcnt = av_count(sizes);
450 0 4 if (iovcnt == 0)
452 0 4 if (iovcnt > INT_MAX) {
457 0 4 Newxz(iov, iovcnt, struct iovec);
458 0 4 if (!iov) {
463 16 4 for (i = 0; i < iovcnt; i++) {
465 16 0 if (size && SvOK(*size)) {
0 16 if (size && SvOK(*size)) {
0 0 if (size && SvOK(*size)) {
0 0 if (size && SvOK(*size)) {
466 0 16 iov_len = SvUV(*size);
467 8 8 if (iov_len > 0) {
469 0 8 if (!iov_base) {
481 2 2 if (offset == NULL)
485 0 2 rv = preadv(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 0 rv = preadv(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 0 rv = preadv(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 2 rv = preadv(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
492 0 4 if (rv <= 0) {
498 16 4 for (iov_sum = 0, i = 0; i < iovcnt; i++) {
503 16 0 if (iov_sum <= rv)
506 0 0 else if (iov_sum - rv < iov_len)
516 8 8 SV *tmp_sv = iov_len ? newSV_type(SVt_PV) : newSVpvn("", 0);
518 0 16 if (!tmp_sv) {
525 8 8 if (iov_len) {
526 0 8 if (sv_cur != iov_len)
532 0 8 SvTAINTED_on(tmp_sv);
535 0 16 if (!av_store((AV*)buffers, i, tmp_sv))
559 0 4 Size_t bufcnt = av_count(buffers);
560 0 4 if (bufcnt == 0)
562 0 4 if (bufcnt > INT_MAX) {
567 0 4 Newxc(iov, bufcnt, struct iovec, struct iovec);
568 0 4 if (!iov) {
575 16 4 for (i = 0; i < bufcnt; i++) {
577 16 0 if (av_elt && SvOK(*av_elt)) {
4 12 if (av_elt && SvOK(*av_elt)) {
4 0 if (av_elt && SvOK(*av_elt)) {
0 4 if (av_elt && SvOK(*av_elt)) {
578 12 0 iov_base = SvPV(*av_elt, iov_len);
579 8 4 if (iov_len > 0) {
587 0 4 if (iovcnt == 0)
589 2 2 else if (offset == NULL)
593 0 2 rv = pwritev(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 0 rv = pwritev(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 0 rv = pwritev(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
0 2 rv = pwritev(fd, iov, iovcnt, SvOK(offset) ? SvUV(offset) : 0);
609 0 3 if (accmode == O_RDONLY)
611 0 3 else if (flags & O_APPEND)
612 0 0 return (accmode == O_RDWR) ? "a+b" : "ab";
613 0 3 else if (accmode == O_WRONLY)
615 3 0 else if (accmode == O_RDWR)
634 0 36 if (SvOK(sv)) {
0 0 if (SvOK(sv)) {
0 0 if (SvOK(sv)) {
635 10 26 if (psx_looks_like_number(sv))
636 10 0 fn = SvIV(sv);
637 25 0 else if ((io = sv_2io(sv))) {
638 11 14 if (IoIFP(io)) /* from open() or sysopen() */
640 14 0 else if (IoDIRP(io)) /* from opendir() */
655 0 0 if (!SvOK(sv))
0 0 if (!SvOK(sv))
0 0 if (!SvOK(sv))
657 0 0 else if (psx_looks_like_number(sv)) {
658 0 0 int fn = SvIV(sv);
661 0 0 else if ((io = sv_2io(sv))) {
662 0 0 if (IoIFP(io))
664 0 0 else if (IoDIRP(io)) {
781 0 0 if (clock_getcpuclockid(pid, &clock_id) == 0)
795 0 0 if (ix == 0)
799 0 0 if (ret == 0) {
800 0 0 EXTEND(SP, 2);
813 0 0 if (clock_settime(clock_id, &tp) == 0)
838 0 0 if (rv == 0 || (errno = rv) == EINTR)
0 0 if (rv == 0 || (errno = rv) == EINTR)
839 0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
850 0 0 if (nanosleep(&request, &remain) == 0 || errno == EINTR)
0 0 if (nanosleep(&request, &remain) == 0 || errno == EINTR)
851 0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
0 0 PUSH_NANOSLEEP_REMAIN;
863 0 0 if (len) {
865 0 0 if (buf != NULL)
872 0 0 if (buf != NULL)
954 0 0 if (rv == 0 || rv == FNM_NOMATCH)
0 0 if (rv == 0 || rv == FNM_NOMATCH)
971 0 0 if (tm != NULL) {
972 0 0 EXTEND(SP, 9);
1004 0 0 if (sec && SvOK(sec))
0 0 if (sec && SvOK(sec))
0 0 if (sec && SvOK(sec))
0 0 if (sec && SvOK(sec))
1005 0 0 tm.tm_sec = SvIV(sec);
1006 0 0 if (min && SvOK(min))
0 0 if (min && SvOK(min))
0 0 if (min && SvOK(min))
0 0 if (min && SvOK(min))
1007 0 0 tm.tm_min = SvIV(min);
1008 0 0 if (hour && SvOK(hour))
0 0 if (hour && SvOK(hour))
0 0 if (hour && SvOK(hour))
0 0 if (hour && SvOK(hour))
1009 0 0 tm.tm_hour = SvIV(hour);
1010 0 0 if (mday && SvOK(mday))
0 0 if (mday && SvOK(mday))
0 0 if (mday && SvOK(mday))
0 0 if (mday && SvOK(mday))
1011 0 0 tm.tm_mday = SvIV(mday);
1012 0 0 if (mon && SvOK(mon))
0 0 if (mon && SvOK(mon))
0 0 if (mon && SvOK(mon))
0 0 if (mon && SvOK(mon))
1013 0 0 tm.tm_mon = SvIV(mon);
1014 0 0 if (year && SvOK(year))
0 0 if (year && SvOK(year))
0 0 if (year && SvOK(year))
0 0 if (year && SvOK(year))
1015 0 0 tm.tm_year = SvIV(year);
1016 0 0 if (wday && SvOK(wday))
0 0 if (wday && SvOK(wday))
0 0 if (wday && SvOK(wday))
0 0 if (wday && SvOK(wday))
1017 0 0 tm.tm_wday = SvIV(wday);
1018 0 0 if (yday && SvOK(yday))
0 0 if (yday && SvOK(yday))
0 0 if (yday && SvOK(yday))
0 0 if (yday && SvOK(yday))
1019 0 0 tm.tm_yday = SvIV(yday);
1020 0 0 if (isdst && SvOK(isdst))
0 0 if (isdst && SvOK(isdst))
0 0 if (isdst && SvOK(isdst))
0 0 if (isdst && SvOK(isdst))
1021 0 0 tm.tm_isdst = SvIV(isdst);
1025 0 0 if (remainder) {
1026 0 0 if (GIMME != G_LIST)
0 0 if (GIMME != G_LIST)
1029 0 0 EXTEND(SP, 9);
1030 0 0 if (tm.tm_sec < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_sec);
1031 0 0 if (tm.tm_min < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_min);
1032 0 0 if (tm.tm_hour < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_hour);
1033 0 0 if (tm.tm_mday < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_mday);
1034 0 0 if (tm.tm_mon < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_mon);
1035 0 0 if (tm.tm_year == INT_MIN) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_year);
1036 0 0 if (tm.tm_wday < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_wday);
1037 0 0 if (tm.tm_yday < 0) PUSHs(&PL_sv_undef); else mPUSHi(tm.tm_yday);
1061 0 0 if (gethostname(name, sizeof(name)) == 0)
1072 0 0 if (getitimer(which, &value) == 0) {
1073 0 0 EXTEND(SP, 4);
1089 0 0 if (setitimer(which, &value, &ovalue) == 0) {
1090 0 0 EXTEND(SP, 4);
1107 0 0 if (rv != -1 || errno == 0)
0 0 if (rv != -1 || errno == 0)
1159 0 0 RETURN_UTXENT;
0 0 RETURN_UTXENT;
1171 0 0 if (ut_id != NULL) {
1175 0 0 RETURN_UTXENT;
0 0 RETURN_UTXENT;
1186 0 0 if (ut_line != NULL) {
1189 0 0 RETURN_UTXENT;
0 0 RETURN_UTXENT;
1213 0 0 EXTEND(SP, 4);
1228 0 0 long result = ix == 0 ? jrand48(xsubi) : nrand48(xsubi);
1230 0 0 EXTEND(SP, 4);
1258 0 0 if (rv != -1 || errno == 0)
0 0 if (rv != -1 || errno == 0)
1271 0 0 EXTEND(SP, 3);
1395 0 0 if (rv == 0)
1427 0 0 if (rv == 0) {
1428 0 0 EXTEND(SP, 4);
1448 0 0 if (initial_sec < 0 || initial_nsec < 0)
0 0 if (initial_sec < 0 || initial_nsec < 0)
1457 0 0 if (rv == 0) {
1458 0 0 EXTEND(SP, 4);
1478 0 2 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
1482 0 2 else if (SvPOK(what) || SvPOKp(what)) {
0 0 else if (SvPOK(what) || SvPOKp(what)) {
1483 2 0 path = SvPV_nolen(what);
1507 0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
1511 0 0 else if (SvPOK(what) || SvPOKp(what)) {
0 0 else if (SvPOK(what) || SvPOKp(what)) {
1512 0 0 path = SvPV_nolen(what);
1536 0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
1540 0 0 else if (SvPOK(what) || SvPOKp(what)) {
0 0 else if (SvPOK(what) || SvPOKp(what)) {
1541 0 0 path = SvPV_nolen(what);
1589 0 2 if (!SvOK(what))
0 0 if (!SvOK(what))
0 0 if (!SvOK(what))
1591 1 1 else if (SvPOK(what) || SvPOKp(what)) {
0 1 else if (SvPOK(what) || SvPOKp(what)) {
1592 1 0 char *path = SvPV_nolen(what);
1603 2 0 RETURN_STAT_BUF(rv, buf);
2 0 RETURN_STAT_BUF(rv, buf);
2 0 RETURN_STAT_BUF(rv, buf);
0 2 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
1615 1 0 RETURN_STAT_BUF(rv, buf);
1 0 RETURN_STAT_BUF(rv, buf);
1 0 RETURN_STAT_BUF(rv, buf);
0 1 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
1629 3 1 ISFUNC(isalnum)
1 124 ISFUNC(isalnum)
126 3 ISFUNC(isalnum)
125 1 ISFUNC(isalnum)
1639 3 1 ISFUNC(isalpha)
1 104 ISFUNC(isalpha)
106 3 ISFUNC(isalpha)
105 1 ISFUNC(isalpha)
1649 3 1 ISFUNC(isascii)
1 256 ISFUNC(isascii)
258 3 ISFUNC(isascii)
257 1 ISFUNC(isascii)
1659 3 1 ISFUNC(isblank)
1 4 ISFUNC(isblank)
6 3 ISFUNC(isblank)
5 1 ISFUNC(isblank)
1669 3 1 ISFUNC(iscntrl)
1 64 ISFUNC(iscntrl)
66 3 ISFUNC(iscntrl)
65 1 ISFUNC(iscntrl)
1679 3 1 ISFUNC(isdigit)
1 20 ISFUNC(isdigit)
22 3 ISFUNC(isdigit)
21 1 ISFUNC(isdigit)
1689 3 1 ISFUNC(isgraph)
1 190 ISFUNC(isgraph)
192 3 ISFUNC(isgraph)
191 1 ISFUNC(isgraph)
1699 3 1 ISFUNC(islower)
1 52 ISFUNC(islower)
54 3 ISFUNC(islower)
53 1 ISFUNC(islower)
1709 3 1 ISFUNC(isprint)
1 192 ISFUNC(isprint)
194 3 ISFUNC(isprint)
193 1 ISFUNC(isprint)
1719 3 1 ISFUNC(ispunct)
1 66 ISFUNC(ispunct)
68 3 ISFUNC(ispunct)
67 1 ISFUNC(ispunct)
1729 3 1 ISFUNC(isspace)
1 12 ISFUNC(isspace)
14 3 ISFUNC(isspace)
13 1 ISFUNC(isspace)
1739 3 1 ISFUNC(isupper)
1 52 ISFUNC(isupper)
54 3 ISFUNC(isupper)
53 1 ISFUNC(isupper)
1749 3 1 ISFUNC(isxdigit)
1 50 ISFUNC(isxdigit)
52 3 ISFUNC(isxdigit)
51 1 ISFUNC(isxdigit)
1791 0 0 if (template != NULL) {
1793 0 0 if (fd >= 0) {
1794 0 0 EXTEND(SP, 2);
1824 0 0 if (fd2 < 0)
1828 0 0 if (!dir) {
1840 0 0 io = GvIOn(gv);
0 0 io = GvIOn(gv);
0 0 io = GvIOn(gv);
0 0 io = GvIOn(gv);
0 0 io = GvIOn(gv);
1896 2 0 RETURN_STAT_BUF(rv, buf);
2 0 RETURN_STAT_BUF(rv, buf);
2 0 RETURN_STAT_BUF(rv, buf);
0 2 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
0 0 RETURN_STAT_BUF(rv, buf);
1941 0 9 if (ix != 0) {
1946 1 8 if (!SvOK(dirfdsv)) {
1 0 if (!SvOK(dirfdsv)) {
1 0 if (!SvOK(dirfdsv)) {
1953 5 3 if (SvROK(dirfdsv) && SvTYPE(SvRV(dirfdsv)) == SVt_IV) {
1 4 if (SvROK(dirfdsv) && SvTYPE(SvRV(dirfdsv)) == SVt_IV) {
1954 1 0 if (SvIV(SvRV(dirfdsv)) != AT_FDCWD) {
0 1 if (SvIV(SvRV(dirfdsv)) != AT_FDCWD) {
1964 1 5 if (dir_fd < 0 && dir_fd != AT_FDCWD) {
0 1 if (dir_fd < 0 && dir_fd != AT_FDCWD) {
1970 7 0 if (ix == 0) {
1972 0 7 if (items > 4)
1974 7 0 flags = (items > 2) ? SvIV(ST(2)) : O_RDONLY;
7 0 flags = (items > 2) ? SvIV(ST(2)) : O_RDONLY;
1975 0 7 mode = (items > 3) ? SvIV(ST(3)) : 0666;
0 0 mode = (items > 3) ? SvIV(ST(3)) : 0666;
2004 1 6 if (path_fd < 0)
2008 2 4 if (got_fd)
2015 4 0 if (fstat(path_fd, &st) == 0) {
2020 4 0 if (gv) {
2021 1 3 if (S_ISDIR(st.st_mode)) {
2023 1 0 if (dirp) {
2024 1 0 IO *io = GvIOn(gv);
0 1 IO *io = GvIOn(gv);
0 0 IO *io = GvIOn(gv);
1 0 IO *io = GvIOn(gv);
0 1 IO *io = GvIOn(gv);
2032 3 0 if (filep) {
2034 3 0 if (pio_filep && do_open(gv, "+<&", 3, FALSE, 0, 0, pio_filep))
3 0 if (pio_filep && do_open(gv, "+<&", 3, FALSE, 0, 0, pio_filep))
2041 4 0 if (return_handle) {
2046 0 0 else if (dirp)
2048 0 0 else if (pio_filep)
2050 0 0 else if (filep)
2056 4 0 if (gv)
2070 1 0 if (RETVAL != NULL)
2083 1 0 if (RETVAL != NULL)
2097 1 0 if (RETVAL != NULL)
2139 1 1 if (! SvPOK(buf))
2141 2 0 cbuf = SvGROW(buf, count);
0 2 cbuf = SvGROW(buf, count);
2142 0 2 if (cbuf == NULL)
2144 0 2 else if (count == 0)
2148 2 0 if (RETVAL >= 0) {
2151 0 2 SvTAINTED_on(buf);
2167 0 2 if (!SvPOK(buf))
2170 2 0 cbuf = SvPV_const(buf, buf_cur);
2171 0 2 if (!buf_cur)
2174 0 2 if (count == NULL || !SvOK(count))
0 0 if (count == NULL || !SvOK(count))
0 0 if (count == NULL || !SvOK(count))
0 0 if (count == NULL || !SvOK(count))
2177 0 0 nbytes = SvUV(count);
2178 0 0 if (nbytes > buf_cur)
2181 2 0 RETVAL = nbytes ? write(fd, cbuf, nbytes) : 0;
2243 1 1 if (! SvPOK(buf))
2245 2 0 cbuf = SvPV(buf, buf_cur);
2248 0 2 if (buf_offset < 0) {
2250 0 0 if (buf_offset < 0) {
2258 0 2 if ((new_len = buf_offset + nbytes) > buf_len) {
2259 0 0 cbuf = SvGROW(buf, new_len);
0 0 cbuf = SvGROW(buf, new_len);
2260 0 0 if (cbuf == NULL)
2265 0 2 if (buf_offset > buf_cur)
2269 2 0 if (nbytes) {
2270 2 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 2 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 2 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
2276 2 0 if (RETVAL >= 0) {
2279 0 2 SvTAINTED_on(buf);
2296 2 0 cbuf = SvPV_const(buf, buf_cur);
2297 2 0 if (!cbuf || !buf_cur)
0 2 if (!cbuf || !buf_cur)
2301 0 2 if (buf_offset < 0)
2303 2 0 if (buf_offset < 0 || (!buf_cur && buf_offset > 0) ||
0 2 if (buf_offset < 0 || (!buf_cur && buf_offset > 0) ||
0 0 if (buf_offset < 0 || (!buf_cur && buf_offset > 0) ||
2 0 if (buf_offset < 0 || (!buf_cur && buf_offset > 0) ||
2304 0 2 (buf_cur && buf_offset >= buf_cur)) {
2309 2 0 if (count == NULL || !SvOK(count))
2 0 if (count == NULL || !SvOK(count))
2 0 if (count == NULL || !SvOK(count))
2 0 if (count == NULL || !SvOK(count))
2312 0 0 i_count = SvUV(count);
2313 0 0 if (i_count > max_nbytes)
2316 2 0 if (i_count) {
2317 2 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 2 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 0 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
0 2 off_t f_offset = (offset != NULL && SvOK(offset)) ? SvUV(offset) : 0;
2362 0 0 if (rv == 0)
2387 0 0 if (rv == 0)
2471 0 2 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
0 0 if (!SvOK(what)) {
2475 1 1 else if (SvPOK(what) || SvPOKp(what)) {
0 1 else if (SvPOK(what) || SvPOKp(what)) {
2476 1 0 path = SvPV_nolen(what);
2604 0 0 EXTEND(SP, 2);
2818 0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0)
0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0)
2819 0 0 PUSH_INT_OR_PV(ret, tmp);
2850 0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0)
0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0)
2865 0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0) {
0 0 if (errno == 0 && fetestexcept(FE_ALL_EXCEPT) == 0) {
2994 0 0 RETURN_COMPLEX(result);
3029 0 0 RETURN_COMPLEX(result);
3040 0 0 RETURN_COMPLEX(result);
3052 0 0 RETURN_COMPLEX(result);
3063 0 0 RETURN_COMPLEX(result);
3074 0 0 RETURN_COMPLEX(result);
3085 0 0 RETURN_COMPLEX(result);
3096 0 0 RETURN_COMPLEX(result);
3107 0 0 RETURN_COMPLEX(result);
3118 0 0 RETURN_COMPLEX(result);
3129 0 0 RETURN_COMPLEX(result);
3140 0 0 RETURN_COMPLEX(result);
3151 0 0 RETURN_COMPLEX(result);
3162 0 0 RETURN_COMPLEX(result);
3173 0 0 RETURN_COMPLEX(result);
3184 0 0 RETURN_COMPLEX(result);
3195 0 0 RETURN_COMPLEX(result);