Microsoft KB Archive/143086

= FIX: CFile::GetFileName Always Returns CString w/Zero Length =

Article ID: 143086

Article Last Modified on 11/21/2006

-

APPLIES TO


 * Microsoft Foundation Class Library 4.2, when used with:
 * Microsoft Visual C++ 4.0 Standard Edition

-



This article was previously published under Q143086



SYMPTOMS
If you call CFile::GetFileName, it will return a CString with the correct file name. However, if you call GetLength on the CString, it will return 0.



CAUSE
The MFC function CFile::GetFileName writes directly to the CString's character pointer. However, it doesn't set the CString's size before returning from this function.



RESOLUTION
Call CString::ReleaseBuffer after calling CFile::GetFileName.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ 4.1.



Sample Code
void CTestDoc::Serialize(CArchive& ar) {  if (ar.IsStoring) {     // TODO: add storing code here }  else {     CFile* fp = ar.GetFile ; ASSERT (fp); CString fname = fp->GetFileName ; // this line is needed to set the size of CString fname.ReleaseBuffer ; int nLength = fname.GetLength; } }

Additional query words: kbVC400bug 4.00 4.10 GetFileName GetLength CFile CString

Keywords: kbbug kbfileio kbfix kbnoupdate kbstring kbvc410fix KB143086

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.