アカウント名:
パスワード:
警告を無視しちゃいかんという教訓を得たと。
こんな感じに、if分を一行にまとめてしまえば、こんな不具合出なかった気がします。
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail;if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail;if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail;
一行が長くなるのを嫌ったのかな?
#define ErrorCheck(f) do { if ((err = f) != 0) goto fail; } while (0)
ErrorCheck(SSLHashSHA1.update(&hashCtx, &serverRandom));ErrorCheck(SSLHashSHA1.update(&hashCtx, &signedParams));ErrorCheck(SSLHashSHA1.final(&hashCtx, &hashOut));
ってやりたくなるんだけど、ダメ?
だめ、ぜったい。これは、エラーチェックだけしてるんじゃなくて、実行してからエラーだったらgoto failしてるんだから、もっとまともな名前にすべき。
do-whileのテクニックで云々している上級者の方々もそこんとこよろしく。
単文でも必ずブロック化しろってのがマイジャスティス。そもそもifの()内で関数呼び出しして、しかも真偽判定用の式内で代入してる時点で超気持ち悪いです。
これ、条件式が追加される仕様変更が来たときに SSLHashSHA1.update関数とかが呼ばれなくなる可能性があるから書き直しになるんですが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
unreachable codeの警告は無視されたのか (スコア:0)
警告を無視しちゃいかんという教訓を得たと。
こんな感じに、if分を一行にまとめてしまえば、こんな不具合出なかった気がします。
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail;
一行が長くなるのを嫌ったのかな?
Re: (スコア:0)
#define ErrorCheck(f) do { if ((err = f) != 0) goto fail; } while (0)
ErrorCheck(SSLHashSHA1.update(&hashCtx, &serverRandom));
ErrorCheck(SSLHashSHA1.update(&hashCtx, &signedParams));
ErrorCheck(SSLHashSHA1.final(&hashCtx, &hashOut));
ってやりたくなるんだけど、ダメ?
Re:unreachable codeの警告は無視されたのか (スコア:0)
だめ、ぜったい。
これは、エラーチェックだけしてるんじゃなくて、
実行してからエラーだったらgoto failしてるんだから、
もっとまともな名前にすべき。
do-whileのテクニックで云々している上級者の方々もそこんとこよろしく。
Re: (スコア:0)
単文でも必ずブロック化しろってのがマイジャスティス。
そもそもifの()内で関数呼び出しして、しかも真偽判定用の式内で代入してる時点で超気持ち悪いです。
これ、条件式が追加される仕様変更が来たときに SSLHashSHA1.update関数とかが呼ばれなくなる可能性があるから書き直しになるんですが。