先日やらかしたC言語でのバグ。

char *ResultStr()
{
    return "";
}

int ReplacePrint(char *sz)
{
    if (sz[0]=='\0') strcpy(sz, "0"); 
    return printf(sz);
}

int main()
{
    // Null文字が出力される
    printf( ResultStr() );

    // Null文字列を変換して、文字列"0"が出力される
    ReplacePrint( ResultStr() );

    // Null文字を出力したいはずなのに、文字列"0"が出力される
    printf( ResultStr() );

    return 0;
}

簡略化して書くとかなりタコい事をしてる。orz
しかし、「""」のポインタに対して保護無しで、普通に上書きできてしまうんだなぁ。
まぁ、必要なのにconstを付けなかったのが敗因という感じ。