SION0016
Parts1
<TABLE width="778" border="0" cellspacing="0" cellpadding="5">
<TR bgcolor="#FFCCCC"> <TD class="text"> <HR> <SPAN class="subject">この改造を取り入れる事で問題発生前に処理を中断出来るバグ </SPAN> <HR> <B><FONT color="#FF0000">**** にてget_userされていないuseroutが行われています </FONT></B> <P>&userout の呼び出しには、事前に get_user が行われていなければなりません。<BR> ●このまま書き込みを行うと、該当IDのユーザーデータの全て、または一部が消失する恐れがあります。 <BR> ●get_user 以外の方法で直接ユーザーデータを読み込むなどの方法を取っており、その手段が確実である場合、$getuserflag に 1 を代入する事でこのエラーは表示されなくなります。 <BR> ●userout が2回繰り返された時にもこのエラーを表示します。</P> <P><B><FONT color="#FF0000">**** にてget_userが2重に行われた後でuseroutされています</FONT></B></P> <P>&get_user を2重に行った場合、&userout が行われてはなりません。 <BR> ●本家版などの場合、このまま書き込みを行うと、通常はマイレコードが消失します。 <BR> ●get_user 以外の方法で直接ユーザーデータを読み込むなどの方法を取っており、その手段が確実である場合、$getuserflag に 1 を代入する事でこのエラーは表示されなくなります。 </P> <P><FONT color="#FF0000"><B>**** にてget_partnerされていないpartneroutが行われています </B></FONT></P> <P>&partnerout の呼び出しには、事前に get_partner が行われていなければなりません。 <BR> ●このまま書き込みを行うと、該当IDのユーザーデータの全て、または一部が消失する恐れがあります。<BR> ●get_partner 以外の方法で直接ユーザーデータを読み込むなどの方法を取っており、その手段が確実である場合、$getpartnerflag に 1 を代入する事でこのエラーは表示されなくなります。 <BR> ●partnerout が2回繰り返された時にもこのエラーを表示します。</P> <P><FONT color="#FF0000"><B>**** にてget_partnerが2重に行われた後でpartneroutされています </B></FONT></P> <P>&get_partner を2重に行った場合、&partnerout が行われてはなりません。 <BR> ●本家版などの場合、このまま書き込みを行うと、通常はマイレコードが消失します。 <BR> ●get_partner 以外の方法で直接ユーザーデータを読み込むなどの方法を取っており、その手段が確実である場合、$getpartnerflag に 1 を代入する事でこのエラーは表示されなくなります。 </P> <HR> <P><B><FONT color="#FF0000">エラーを表示しない問題</FONT></B></P> <P> &get_user > &userout を行った後に、再び &get_user > &userout を行う事は、本家版ではマイレコードが消失する原因となります。 <BR> ※( get_partner も同様です) <BR> ●当改造を組み込んでいる場合には、正常に動作しますので、エラー表示を行いません。 <BR> ●当改造を組み込まない場合には、途中で $getpartnerflag をクリアしてやる必要があります。 </P> <HR> </TD> </TR>
</TABLE>
Parts2
<br>
<B><FONT color="#0000FF"><A href="../download/judge_cgi.txt"></A></FONT></B><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Get User # Line2142</FONT></B><BR>
<b>return if $getuserflag; </b><Br>
<TEXTAREA name="textfield2" cols="100" rows="3">
#-EDIT- return if $getuserflag;
if ($getuserflag) { $getuserflag = -1; return @rcdlines; }
#-END of EDIT- SION0016v1.00-1-1/6
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Get Partner # Line2157</FONT></B><BR>
<b>return if $getpartnerflag; </b><br>
<TEXTAREA name="textarea13" cols="100" rows="3">
#-EDIT- return if $getpartnerflag;
if ($getpartnerflag) { $getpartnerflag = -1; return; }
#-END of EDIT- SION0016v1.00-1-2/6
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub User Out # Line2171</FONT></B><BR>
<b>$tm = time; </b><br>
<TEXTAREA name="textarea14" cols="100" rows="5">
#-ADD-
push (@editor,"改造時データ保全 Ver 1.00 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); if (!$getuserflag) { push(@msg,"$Fm{'mode'}にてget_userされていないuseroutが行われています"); return; } if ($getuserflag == -1) { push(@msg,"$Fm{'mode'}にてget_userが2重に行われた後でuseroutされています"); return; } pop @editor;
#-END of EDIT- SION0016v1.00-1-3/6
$tm = time;
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub User Out # Line2175</FONT></B> <BR>
<B>&writedat("$usrdir$id\.dat",@rcdlines); </b><BR>
<TEXTAREA name="textarea15" cols="100" rows="4">
&writedat("$usrdir$id\.dat",@rcdlines);
#-ADD-
$getuserflag = 0;
#-END of EDIT- SION0016v1.00-1-4/6
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Partner Out # Line2179</FONT></B><BR>
<b>sub partnerout { </b><Br>
<TEXTAREA name="textarea16" cols="100" rows="5">
sub partnerout {
#-ADD-
push (@editor,"改造時データ保全 Ver 1.00 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); if (!$getpartnerflag) { push(@msg,"$Fm{'mode'}にてget_partnerされていないpartneroutが行われています"); return; } if ($getpartnerflag == -1) { push(@msg,"$Fm{'mode'}にてget_partnerが2重に行われた後でpartneroutされています"); return; } pop @editor;
#-END of EDIT- SION0016v1.00-1-5/6
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Partner Out # Line2183</FONT></B><BR>
<b>&writedat("$usrdir$pid\.dat",@prclines); </b><br>
<TEXTAREA name="textarea5" cols="100" rows="4">
&writedat("$usrdir$pid\.dat",@prclines);
#-ADD-
$getpartnerflag = 0;
#-END of EDIT- SION0016v1.00-1-6/6
</TEXTAREA>