文字列が終わってなかった

ロベールのC++教室 - 第13章 関数のすげ替え -

「すげ替え」るという言葉を使ってる人ってミギー以外ではじめて見た。

fopen に渡す mode の文字列から 'b' を取り除く処理をするメンバ関数。pszDest に修正後の mode 文字列を突っ込むんだけど '\0' が抜けてた。

bool CTextFile::ModifyFlags (const char* pszSource, char* pszDest, int nSize)
{
    bool bBinary;  // 'b' の指定があるかどうか

    bBinary = (strchr(pszSource) != NULL);

    // フラグが多すぎるときは false を返す
    if ((int)strlen(pszSource) - bBinary > nSize - 1)
        return false;

    // 強制的にテキストモードで開きます
    // 'b' 以外の文字だけコピーします
    for (; *pszSource; pszSource++)
    {
        if (*pszSource != 'b')
        {
            *pszDest = *pszSource;
            pszDest++;
        }
    }
    pszDest = '\0'; // これが抜けてる
    return true;
}