[Bug:Editor] Crash when clearing an existing edit buffer.
< Newer Topic
:: Older Topic >
AFKMud 2.1.3
Pages:<< prev 1 next >>
#1 Mar 7, 2010 9:52 pm
Black Hand
GroupAdministrators
Posts3,697
JoinedJan 1, 2002
Bug: Crash when clearing an existing edit buffer.
Danger: High - Potential for a lot of data loss if the crash happens during a long building session where work hasn't been saved.
Discovered in: AFKMud 2.1.3
Found by: Materia
Fixed by: Materia
---
editor.cpp, char_data::edit_buffer
Locate:
Change to:
Locate:
Change to:
This one is far more insidious, but will be obvious to anyone familiar with the behavior of memset and what that does in relation to things using the C++ STL, as the editor data does with std::string. The value for the std::string member of the editor_data struct gets blasted and is no longer valid because it has to be initialized with new.
Danger: High - Potential for a lot of data loss if the crash happens during a long building session where work hasn't been saved.
Discovered in: AFKMud 2.1.3
Found by: Materia
Fixed by: Materia
---
editor.cpp, char_data::edit_buffer
Locate:
if( !str_cmp( cmd, "c" ) ) { memset( edit, '\0', sizeof( editor_data ) ); edit->numlines = 0; edit->on_line = 0; print( "Buffer cleared.\r\n> " ); return; }
Change to:
if( !str_cmp( cmd, "c" ) ) { delete edit; edit = new editor_data; print( "Buffer cleared.\r\n> " ); return; }
Locate:
if( line == 0 && edit->numlines == 1 ) { memset( edit, '\0', sizeof( editor_data ) ); edit->numlines = 0; edit->on_line = 0; print( "Line deleted.\r\n> " ); return; }
Change to:
if( line == 0 && edit->numlines == 1 ) { delete edit; edit = new editor_data; print( "Line deleted.\r\n> " ); return; }
This one is far more insidious, but will be obvious to anyone familiar with the behavior of memset and what that does in relation to things using the C++ STL, as the editor data does with std::string. The value for the std::string member of the editor_data struct gets blasted and is no longer valid because it has to be initialized with new.
Pages:<< prev 1 next >>