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