View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003050 | FSSCP | FRED | public | 2014-05-29 22:11 | 2014-09-24 06:37 |
Reporter | Axem | Assigned To | CommanderDJ | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 3.7.2 RC2 | ||||
Target Version | 3.7.2 | Fixed in Version | 3.7.2 | ||
Summary | 0003050: Custom mainhall text is limited to 10 chars in the campaign editor | ||||
Description | Despite the actual game allowing long main hall text names, the FRED campaign editor will throw a fit if the name is over 10 characters long. In campaign_editor::mission_selected(), mainhalltext is an array of 10 characters, but the actual main hall names are stored as SCP_Strings which I think can be quite a bit more than 10 characters. | ||||
Steps To Reproduce | Make a new campaign Set the mainhall name to something long like 12345678900 Get this error when you click on the mission again --------------------------- Microsoft Visual C++ Debug Library --------------------------- Debug Error! Program: C:\Games\FreeSpace\fred2_open_3_7_2_RC2-DEBUG.exe Module: C:\Games\FreeSpace\fred2_open_3_7_2_RC2-DEBUG.exe File: Run-Time Check Failure 0000002 - Stack around the variable 'mainhalltext' was corrupted. (Press Retry to debug the application) --------------------------- Abort Retry Ignore --------------------------- | ||||
Tags | No tags attached. | ||||
|
Should be an easy fix - I evidently missed this when doing the mainhall stuff all the way back in 2012. Is a patch enough for you to test with, or would you like a build? |
|
Patch updated, credit to niffiwan for the suggestion. |
|
Er - just noticed that the assignment seems to be the wrong way around? Campaign.missions[num].main_hall = mainhalltext; should be this? mainhalltext = Campaign.missions[num].main_hall; Or maybe get rid of the temp SCP_string entirely and just have this? bc_hall->SetWindowText(Campaign.missions[num].main_hall.c_str()); |
|
3050.patch (884 bytes)
Index: code/fred2/campaigneditordlg.cpp =================================================================== --- code/fred2/campaigneditordlg.cpp (revision 10788) +++ code/fred2/campaigneditordlg.cpp (working copy) @@ -246,7 +246,6 @@ void campaign_editor::mission_selected(int num) { CEdit *bc_dialog, *bc_hall, *bc_persona; - char mainhalltext[10]; char personatext[10]; bc_dialog = (CEdit *) GetDlgItem(IDC_BRIEFING_CUTSCENE); @@ -259,8 +258,7 @@ bc_dialog->SetWindowText(Campaign.missions[num].briefing_cutscene); // new main hall stuff - sprintf(mainhalltext, "%s", const_cast<char*>(Campaign.missions[num].main_hall.c_str())); - bc_hall->SetWindowText(CString(mainhalltext)); + bc_hall->SetWindowText(Campaign.missions[num].main_hall.c_str()); // new debriefing persona stuff sprintf(personatext, "%d", Campaign.missions[num].debrief_persona_index); |
|
Whoops - you're right, patch updated. Also, upon further testing it seems that there is a different limit somewhere else in the code of 31 characters - so we can get names higher than 10 with the current patch but not more than 31. I'll look into this further. |
|
The 31-character limit is beyond the scope of this bug. The patch looks fine, and that's sufficient for now I think. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-05-29 22:11 | Axem | New Issue | |
2014-06-09 09:39 | CommanderDJ | Assigned To | => CommanderDJ |
2014-06-09 09:39 | CommanderDJ | Status | new => assigned |
2014-06-09 09:39 | CommanderDJ | File Added: 3050.patch | |
2014-06-09 09:40 | CommanderDJ | Note Added: 0015826 | |
2014-06-09 12:18 | CommanderDJ | File Deleted: 3050.patch | |
2014-06-09 12:18 | CommanderDJ | File Added: 3050.patch | |
2014-06-09 12:20 | CommanderDJ | Note Added: 0015828 | |
2014-06-09 12:20 | CommanderDJ | Status | assigned => code review |
2014-06-09 21:20 | niffiwan | Note Added: 0015831 | |
2014-06-09 22:10 | CommanderDJ | File Deleted: 3050.patch | |
2014-06-09 22:10 | CommanderDJ | File Added: 3050.patch | |
2014-06-09 22:11 | CommanderDJ | Note Added: 0015832 | |
2014-06-09 22:11 | CommanderDJ | Status | code review => assigned |
2014-06-29 23:09 | Goober5000 | Target Version | => 3.7.2 |
2014-09-24 06:36 | Goober5000 | Note Added: 0016292 | |
2014-09-24 06:36 | Goober5000 | Changeset attached | => fs2open trunk r11081 |
2014-09-24 06:37 | Goober5000 | Status | assigned => resolved |
2014-09-24 06:37 | Goober5000 | Resolution | open => fixed |
2014-09-24 06:37 | Goober5000 | Fixed in Version | => 3.7.2 |