アカウント名:
パスワード:
警告を無視しちゃいかんという教訓を得たと。
こんな感じに、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));
ってやりたくなるんだけど、ダメ?
このコードはCではなくてC++なのでは。SSLHashSHA1.updateはメンバ関数を呼び出している様に見えるけど同じディレクトリにcppファイルもあるみたいだし。C++11以降が使える処理系なら、こんなふうにgotoを使わずにラムダ式でreturnしたほうがいいのでは。int errconst bool flag=[&](){ if((err=SSLHashSHA1.update(&hashCtx, &serverRandom))!=0){return false;} if((err=SSLHashSHA1.update(&hashCtx, &signedParams))!=0){return false;} if((err=SSLHashSHA1.final(&hashCtx, &hashOut))!=0){return false;} return true;}();
"."が使われている場合でも、C++のメンバ関数ではなく構造体のメンバに関数ポインタがあり、それを呼び出しているだけの可能性もあるので呼び出し側だけではC++noコードだとは判断が付きません。
その構造体の定義は見つける前にGive upしましたが、関数ポインタをメンバに持つ似たような構造体定義は同じディレクトリのsslTypes.h [apple.com]の下の方にもあります。
せっかく劣ったコンパイラを考慮する必要のない環境なのにねえ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
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));
ってやりたくなるんだけど、ダメ?
そもそも (スコア:0)
このコードはCではなくてC++なのでは。SSLHashSHA1.updateはメンバ関数を呼び出している様に見えるけど
同じディレクトリにcppファイルもあるみたいだし。
C++11以降が使える処理系なら、こんなふうにgotoを使わずにラムダ式でreturnしたほうがいいのでは。
int err
const bool flag=[&](){
if((err=SSLHashSHA1.update(&hashCtx, &serverRandom))!=0){return false;}
if((err=SSLHashSHA1.update(&hashCtx, &signedParams))!=0){return false;}
if((err=SSLHashSHA1.final(&hashCtx, &hashOut))!=0){return false;}
return true;
}();
関数ポインタ (スコア:1)
"."が使われている場合でも、C++のメンバ関数ではなく
構造体のメンバに関数ポインタがあり、それを呼び出しているだけの可能性もあるので
呼び出し側だけではC++noコードだとは判断が付きません。
その構造体の定義は見つける前にGive upしましたが、関数ポインタをメンバに持つ似たような構造体定義は同じディレクトリの
sslTypes.h [apple.com]の下の方にもあります。
Re: (スコア:0)
せっかく劣ったコンパイラを考慮する必要のない環境なのにねえ。