Don't crash in wxTextFile::GetLastLine() if the file is empty
Just return a reference to an empty wxString, as GetFirstLine() already does (although this is actually questionable -- what if this string is modified?). See #17283.
This commit is contained in:
@@ -73,6 +73,7 @@ All:
|
|||||||
- Make it easier to convert to/from UTF-8-encoded std::string (ARATA Mizuki).
|
- Make it easier to convert to/from UTF-8-encoded std::string (ARATA Mizuki).
|
||||||
- Add support for loading dynamic lexer in wxStyledTextCtrl (New Pagodi).
|
- Add support for loading dynamic lexer in wxStyledTextCtrl (New Pagodi).
|
||||||
- Handle strings with embedded NULs in wxDataStream (Nitch).
|
- Handle strings with embedded NULs in wxDataStream (Nitch).
|
||||||
|
- Don't crash in wxTextFile::GetLastLine() if the file is empty (crohr).
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
|
||||||
|
@@ -125,7 +125,7 @@ public:
|
|||||||
wxString& GetPrevLine() /* const */
|
wxString& GetPrevLine() /* const */
|
||||||
{ wxASSERT(m_nCurLine > 0); return m_aLines[--m_nCurLine]; }
|
{ wxASSERT(m_nCurLine > 0); return m_aLines[--m_nCurLine]; }
|
||||||
wxString& GetLastLine() /* const */
|
wxString& GetLastLine() /* const */
|
||||||
{ m_nCurLine = m_aLines.size() - 1; return m_aLines.Last(); }
|
{ return m_aLines.empty() ? ms_eof : m_aLines[m_nCurLine = m_aLines.size() - 1]; }
|
||||||
|
|
||||||
// get the type of the line (see also GetEOL)
|
// get the type of the line (see also GetEOL)
|
||||||
wxTextFileType GetLineType(size_t n) const { return m_aTypes[n]; }
|
wxTextFileType GetLineType(size_t n) const { return m_aTypes[n]; }
|
||||||
|
@@ -117,6 +117,9 @@ void TextFileTestCase::ReadEmpty()
|
|||||||
CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) );
|
CPPUNIT_ASSERT( f.Open(wxString::FromAscii(GetTestFileName())) );
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL( (size_t)0, f.GetLineCount() );
|
CPPUNIT_ASSERT_EQUAL( (size_t)0, f.GetLineCount() );
|
||||||
|
CPPUNIT_ASSERT( f.Eof() );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( "", f.GetFirstLine() );
|
||||||
|
CPPUNIT_ASSERT_EQUAL( "", f.GetLastLine() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextFileTestCase::ReadDOS()
|
void TextFileTestCase::ReadDOS()
|
||||||
|
Reference in New Issue
Block a user