ATL的BUG

    技术2026-09-02  3

    CStringA strA(_T(""); CStringW strW(""); 以上语句调用GetLastError()会返回ERROR_INSUFFICIENT_BUFFER.原因在于CString内部会调用WideCharToMultiByte.MultiByteToWideChar进行转码,可是ATL在确定转换后所需缓冲区长度时存在一个BUG,导致提供的缓冲区长度比所需的少一,因此出现这个错误码。

     

     

    具体BUG的位置是:

    cstringt.h中的

    static int __cdecl GetBaseTypeLength( LPCSTR pszSrc ) throw();

    static int __cdecl GetBaseTypeLength( LPCWSTR pszSource ) throw();

    最新回复(0)