[Feature #3018] UNINITIALIZED_VAR() $B%^%/%m$NF3F~(B

Feature #3018: UNINITIALIZED_VAR() e$B%^%/%m$NF3F~e(B
http://redmine.ruby-lang.org/issues/show/3018

e$B5/I<<Te(B: Motohiro KOSAKI
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe(B: Low
e$B%+%F%4%je(B: core, Target version: 1.9.x

e$B:G6a$Ne(Bgcce$B$OL$=i4|2=JQ?t$re(Breade$B$7$h$&$H$9$k$H7Y9p$r=P$9$N$G$9$,!"?dO@$,$$$6$C$Q$J$N$G$?$^$KE*30$l$J7Y9p$r=P$7$^$9!#e(B
e$B$=$NI{:nMQ$Ge(Bthread.c
e$B$Ne(Bdo_select()e$B$,8=:_1x$$$3$H$K$J$C$F$$$^$9!#e(B


static int
do_select(int n, fd_set *read, fd_set *write, fd_set *except,
struct timeval timeout)
{
int result, lerrno;
fd_set orig_read, orig_write, orig_except;
#if defined GNUC && defined x86_64
#define FAKE_FD_ZERO(f) (
(int )&(f)=0) / suppress lots of warnings */
#else
#define FAKE_FD_ZERO(f) ((void)0)
#endif

(snip)

if (read) orig_read = *read; else FAKE_FD_ZERO(orig_read);
if (write) orig_write = *write; else FAKE_FD_ZERO(orig_write);
if (except) orig_except = *except; else FAKE_FD_ZERO(orig_except);

#undef FAKE_FD_ZERO


FAKE_FD_ZERO()e$B$,A}$($?$3$H$K$h$C$F%V%i%s%A$,A}$($F$7$^$C$F$$$k$N$,H~$7$/$J$$$N$H!“e(B
x86_64
e$B$K0MB8$7$J$$$NLdBj$J$N$Ge(B#ifdefe$B$N@Z$jJ}$,4V0c$C$F$$$k$H$$$&LdBj$,$”$j$^$9!#e(B

Linuxe$B$G$O$3$NLdBj$K$?$$$7$F0J2<$N$h$&$J%^%/%m$G2r7h$7$F$*$j!“F1MM$N<jK!$rF3F~$7$?$$$He(B
e$B;W$&$N$G$9$,!”$$$+$,$G$7$g$&$+!)e(B

#define uninitialized_var(x) x = x

FAKE_FD_ZEROe$B$H0c$$<+8JBeF~$O:GE,2=$G>C$($k$N$G<B9T;~%3%9%H$O#0$G$9!#e(B
e$B%Q%C%A$rE:IU$7$^$9!#e(B

e$B$“$H!“e(BUNLIKELY()e$B$K$”$o$;$F!”%^%/%m$re(Bvm_core.he$B$K$*$$$?$N$G$9$,!"e(B
e$B$3$l$K$D$$$F$40U8+$r$*J9$+$;$/$@$5$$!#e(B

e$B!!$5$5$@$G$9!%e(B

(2010/03/26 22:40), Motohiro KOSAKI wrote::

Linuxe$B$G$O$3$NLdBj$K$?$$$7$F0J2<$N$h$&$J%^%/%m$G2r7h$7$F$*$j!“F1MM$N<jK!$rF3F~$7$?$$$He(B
e$B;W$&$N$G$9$,!”$$$+$,$G$7$g$&$+!)e(B

#define uninitialized_var(x) x = x

e$B!!$J$s$H$J$/!$%^%/%m$NL>A0$,>.J8;z$C$F$N$K0cOB46$,$"$k$s$G$9$,!$$=$&$G$be(B
e$B$J$$$G$7$g$&$+!%$=$l$H$b!$JL$N%W%m%0%i%`!Je(BLinuxe$B!K$H0l=o$N$[$&$,!$DL$j$,e(B
e$BNI$/$F$$$$$G$7$g$&$+!%e(B

e$BB>$O0[O@$"$j$^$;$s!%e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40779] [Feature #3018] UNINITIALIZED_VAR()
e$B%^%/%m$NF3F~e(B”
on Fri, 26 Mar 2010 22:40:53 +0900, Motohiro KOSAKI
[email protected] writes:

|e$B:G6a$Ne(Bgcce$B$OL$=i4|2=JQ?t$re(Breade$B$7$h$&$H$9$k$H7Y9p$r=P$9$N$G$9$,!"?dO@$,$$$6$C$Q$J$N$G$?$^$KE*30$l$J7Y9p$r=P$7$^$9!#e(B
|e$B$=$NI{:nMQ$Ge(Bthread.c e$B$Ne(Bdo_select()e$B$,8=:_1x$$$3$H$K$J$C$F$$$^$9!#e(B

|Linuxe$B$G$O$3$NLdBj$K$?$$$7$F0J2<$N$h$&$J%^%/%m$G2r7h$7$F$*$j!“F1MM$N<jK!$rF3F~$7$?$$$He(B
|e$B;W$&$N$G$9$,!”$$$+$,$G$7$g$&$+!)e(B

e$B$$$$$s$8$c$J$$$G$7$g$&$+!#%3%%C%H$7$F$/$@$5$$!#$C$F!"$3$5$-e(B
e$B$5$s$K%3%
%C%H8"$5$7$"$2$F$^$7$?$C$1!)e(B

|Linuxe$B$G$O$3$NLdBj$K$?$$$7$F0J2<$N$h$&$J%^%/%m$G2r7h$7$F$*$j!“F1MM$N<jK!$rF3F~$7$?$$$He(B
|e$B;W$&$N$G$9$,!”$$$+$,$G$7$g$&$+!)e(B

e$B$$$$$s$8$c$J$$$G$7$g$&$+!#%3%%C%H$7$F$/$@$5$$!#$C$F!"$3$5$-e(B
e$B$5$s$K%3%
%C%H8"$5$7$"$2$F$^$7$?$C$1!)e(B

e$B$$$(!";d$O%3%%C%?!<$G$O$J$$$G$9!#e(B
e$B:rF|e(BIRCe$B$GBeM}%3%
%C%H$rN)$FB3$1$KCG$l$FHa$7$$;W$$$r$7$F$$$?=j$J$N$Ge(B
e$B%3%_%C%H8"$r$$$?$@$1$k$J$i$"$j$,$?$$$G$9!#<+J,$G%^!<%8$7$h$&$H;W$$$^$9!#e(B

2010e$BG/e(B3e$B7ne(B27e$BF|e(B9:17 SASADA Koichi [email protected]:

e$BNI$/$F$$$$$G$7$g$&$+!%e(B

e$BB>$O0[O@$"$j$^$;$s!%e(B

e$B=q$-J}$,0-$+$C$?$G$9!#@bL@$Oe(BLinuxe$B$NDj5A$N0zMQ$J$N$G>.J8;z$G$9$,!"e(B
e$B%Q%C%A$G$O$9$G$KBgJ8;z$KJQ49$5$l$F$$$^$9!#e(B
e$B$3$l$O!"e(BLIKELY/UNLIKELYe$B$,BgJ8;z$KJQ49$5$l$F$$$k$N$K9g$o$;$^$7$?!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40831] Re: [Feature #3018] UNINITIALIZED_VAR()
e$B%^%/%m$NF3F~e(B”
on Mon, 29 Mar 2010 19:45:01 +0900, KOSAKI Motohiro
[email protected] writes:

|e$B:rF|e(BIRCe$B$GBeM}%3%%C%H$rN)$FB3$1$KCG$l$FHa$7$$;W$$$r$7$F$$$?=j$J$N$Ge(B
|e$B%3%
%C%H8"$r$$$?$@$1$k$J$i$"$j$,$?$$$G$9!#<+J,$G%^!<%8$7$h$&$H;W$$$^$9!#e(B

[email protected] e$B$Ke(B gpg e$B%5%$%s$7$?e(B ssh2
e$B8x3+80$rAw$Ce(B
e$B$F$/$@$5$$!#e(Bcvs-e$B$C$F$H$3$m$,;~Be$r46$8$5$;$^$9$M!#e(B

e$BK\Bj$8$c$J$$$G$9$,!"e(B

2010/3/30 Yukihiro M. [email protected]:

[email protected] e$B$Ke(B gpg e$B%5%$%s$7$?e(B ssh2 e$B8x3+80$rAw$Ce(B
e$B$F$/$@$5$$!#e(Bcvs-e$B$C$F$H$3$m$,;~Be$r46$8$5$;$^$9$M!#e(B

gpge$B%5%$%s"*e(B(PGP|OpenPGP)(e$B%5%$%se(B|e$B=pL>e(B)e$B!"$H$9$k$N$,$h$$$H;W$$$^$9!#e(B
gpge$B$Oe(BOpenPGPe$B;EMM!J!\e(BPGPe$B;EMM!K$r<BAu$7$?%D!<%k$NL>A0$J$N$G!#e(B
e$B$3$l$r<u$1$kA0ED$5$se(B(?)e$B$Oe(Bgpge$B$G8!>Z$7$F$k$N$+$b$7$l$^$;$s$,!"e(B
gpge$B8GM-5!G=$O;H$C$F$J$$$O$:$G$9!#e(B

e$B;d$O<+:ne(BRubye$B%D!<%k$G=pL>$7$FAw$C$?$O$:!#e(B

e$BBg85$Ne(BWikie$B$N%Z!<%8$,$=$&$J$C$F$k$s$G$7$?$C$1!)e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40839] Re: [Feature #3018] UNINITIALIZED_VAR()
e$B%^%/%m$NF3F~e(B”
on Tue, 30 Mar 2010 10:23:59 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|2010/3/30 Yukihiro M. [email protected]:
|> [email protected] e$B$Ke(B gpg e$B%5%$%s$7$?e(B ssh2 e$B8x3+80$rAw$Ce(B
|> e$B$F$/$@$5$$!#e(Bcvs-e$B$C$F$H$3$m$,;~Be$r46$8$5$;$^$9$M!#e(B
|
|gpge$B%5%$%s"*e(B(PGP|OpenPGP)(e$B%5%$%se(B|e$B=pL>e(B)e$B!"$H$9$k$N$,$h$$$H;W$$$^$9!#e(B
|gpge$B$Oe(BOpenPGPe$B;EMM!J!\e(BPGPe$B;EMM!K$r<BAu$7$?%D!<%k$NL>A0$J$N$G!#e(B
|e$B$3$l$r<u$1$kA0ED$5$se(B(?)e$B$Oe(Bgpge$B$G8!>Z$7$F$k$N$+$b$7$l$^$;$s$,!"e(B
|gpge$B8GM-5!G=$O;H$C$F$J$$$O$:$G$9!#e(B

e$B5-210c$$$+$b$7$l$^$;$s$,!“Aw$i$l$F$-$?=pL>$,e(B gpg
e$B$G8!>Z$G$-$:e(B
e$B:FAw$r$4j$$$7$?%1!<%9$,$"$C$?$O$:$G$9!#$G$9$+$i!"M}6~$H$7$Fe(B
e$B$O!"CfB<$5$s$N$
$C$7$c$kDL$j$J$N$@$H;W$$$^$9$,!”!V$3$A$i$Oe(B
gpg e$B$r;H$&$+$i!“$=$l$G8!>Z$G$-$k=pL>$K$7$F$M!W$H$$$&0U?^$NI=e(B
e$BL@$O0UL#$,$”$k$H;W$$$^$7$?!#3N$+!"$=$l0J9_e(B pgp e$B$H8F$P$:e(B gpg
e$B$H8F$V$h$&$K$7$?$O$:!#e(B

e$B$=$3$+$i@h$O!“e(B(PGP |
OpenPGP)e$B$NAj8_1?MQ@-$H$+$$$&OC$K$J$k$N$@e(B
e$B$H;W$$$^$9$,!”;d$?$A$O%;%-%e%j%F%#$N@lLg2H$G$O$J$$$N$G!#e(B

2010/3/30 Yukihiro M. [email protected]:

|gpge$B%5%$%s"*e(B(PGP|OpenPGP)(e$B%5%$%se(B|e$B=pL>e(B)e$B!"$H$9$k$N$,$h$$$H;W$$$^$9!#e(B

e$B5-210c$$$+$b$7$l$^$;$s$,!“Aw$i$l$F$-$?=pL>$,e(B gpg e$B$G8!>Z$G$-$:e(B
e$B:FAw$r$4j$$$7$?%1!<%9$,$"$C$?$O$:$G$9!#$G$9$+$i!"M}6~$H$7$Fe(B
e$B$O!"CfB<$5$s$N$
$C$7$c$kDL$j$J$N$@$H;W$$$^$9$,!”!V$3$A$i$Oe(B
gpg e$B$r;H$&$+$i!“$=$l$G8!>Z$G$-$k=pL>$K$7$F$M!W$H$$$&0U?^$NI=e(B
e$BL@$O0UL#$,$”$k$H;W$$$^$7$?!#3N$+!"$=$l0J9_e(B pgp e$B$H8F$P$:e(B gpg
e$B$H8F$V$h$&$K$7$?$O$:!#e(B

e$B$=$l$O<:Ni$7$^$7$?!#;DG0$JOC$G$9$,$“$j$,$A$G$9$M!#8+$F$_$?$$$J$”$=$N=pL>!#e(B

–rfc2440e$B%*%W%7%g%s$H$+!“8_49@-$K$D$$$F$$$m$$$mLLE]$JOC$O$”$j$^$9!#e(B

e$B$G$O!“!Ve(Bgpge$B%5%$%s!W”*!Ve(Bgpge$B$r;H$C$F=pL>!W$/$i$$$G$<$R!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40841] Re: [Feature #3018] UNINITIALIZED_VAR()
e$B%^%/%m$NF3F~e(B”
on Tue, 30 Mar 2010 11:12:50 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|e$B$G$O!“!Ve(Bgpge$B%5%$%s!W”*!Ve(Bgpge$B$r;H$C$F=pL>!W$/$i$$$G$<$R!#e(B

e$B$=$&$G$9$M!#:#8e$O!Ve(Bgpge$B$G8!>Z$G$-$k=pL>!W$/$i$$$G!#e(B

e$BA0ED$G$9!#e(B

2010e$BG/e(B3e$B7ne(B30e$BF|e(B10:51 Yukihiro M.
[email protected]:

e$B:FAw$r$4j$$$7$?%1!<%9$,$"$C$?$O$:$G$9!#$G$9$+$i!"M}6~$H$7$Fe(B
e$B$O!"CfB<$5$s$N$
$C$7$c$kDL$j$J$N$@$H;W$$$^$9$,!“!V$3$A$i$Oe(B
gpg e$B$r;H$&$+$i!”$=$l$G8!>Z$G$-$k=pL>$K$7$F$M!W$H$$$&0U?^$NI=e(B
e$BL@$O0UL#$,$“$k$H;W$$$^$7$?!#3N$+!”$=$l0J9_e(B pgp e$B$H8F$P$:e(B gpg
e$B$H8F$V$h$&$K$7$?$O$:!#e(B

e$B$=$&$G$7$?$C$1!#e(B
e$B;d$O$J$R$5$s$KE$i$l$F$+$ie(BPGPe$B$H8@$&$h$&$K$7$F$$$^$7$?!#e(B

e$B:G=i;d$,e(Bgpge$B$H8@$C$F$$$?$N$Oe(BDebiane$B%W%m%8%'%/%H$N1F6A$@$C$?$h$&$Ke(B
e$B;W$$$^$9!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40843] Re: [Feature #3018] UNINITIALIZED_VAR()
e$B%^%/%m$NF3F~e(B”
on Tue, 30 Mar 2010 11:22:22 +0900, Shugo M.
[email protected] writes:

|e$B;d$O$J$R$5$s$KE$i$l$F$+$ie(BPGPe$B$H8@$&$h$&$K$7$F$$$^$7$?!#e(B

e$B$"$l!“5-210c$$$+$J$”!#e(B