Fix bug in metadata save/load state.

The sketch_name char array was to short, causing a buffer overflow.
This commit is contained in:
2025-08-16 09:51:05 -07:00
parent 8bb89a5f4b
commit 84cafe2387
3 changed files with 13 additions and 7 deletions

View File

@ -228,7 +228,13 @@ void HandleEncoderPressed() {
if (app.selected_sub_param < StateManager::MAX_SAVE_SLOTS) { if (app.selected_sub_param < StateManager::MAX_SAVE_SLOTS) {
app.selected_save_slot = app.selected_sub_param; app.selected_save_slot = app.selected_sub_param;
stateManager.loadData(app, app.selected_save_slot); stateManager.loadData(app, app.selected_save_slot);
InitGravity(app); if (gravity.clock.Tempo() != app.tempo) {
gravity.clock.SetTempo(app.tempo);
}
// If clock is active, just load the pattern, do not change other global state.
if (gravity.clock.IsPaused()) {
InitGravity(app);
}
} }
break; break;
case PARAM_MAIN_FACTORY_RESET: case PARAM_MAIN_FACTORY_RESET:

View File

@ -2,7 +2,7 @@
* @file save_state.cpp * @file save_state.cpp
* @author Adam Wonak (https://github.com/awonak/) * @author Adam Wonak (https://github.com/awonak/)
* @brief Alt firmware version of Gravity by Sitka Instruments. * @brief Alt firmware version of Gravity by Sitka Instruments.
* @version 2.0.1 * @version 2.0.0
* @date 2025-07-04 * @date 2025-07-04
* *
* @copyright MIT - (c) 2025 - Adam Wonak - adam.wonak@gmail.com * @copyright MIT - (c) 2025 - Adam Wonak - adam.wonak@gmail.com
@ -55,8 +55,8 @@ bool StateManager::loadData(AppState& app, byte slot_index) {
// Load the state data from the specified EEPROM slot and update the app state save slot. // Load the state data from the specified EEPROM slot and update the app state save slot.
_loadState(app, slot_index); _loadState(app, slot_index);
app.selected_save_slot = slot_index; app.selected_save_slot = slot_index;
// Persist this change in the global metadata. // Persist this change in the global metadata on next update.
_saveMetadata(app); _isDirty = true;
return true; return true;
} }

View File

@ -2,7 +2,7 @@
* @file save_state.h * @file save_state.h
* @author Adam Wonak (https://github.com/awonak/) * @author Adam Wonak (https://github.com/awonak/)
* @brief Alt firmware version of Gravity by Sitka Instruments. * @brief Alt firmware version of Gravity by Sitka Instruments.
* @version 2.0.1 * @version 2.0.0
* @date 2025-07-04 * @date 2025-07-04
* *
* @copyright MIT - (c) 2025 - Adam Wonak - adam.wonak@gmail.com * @copyright MIT - (c) 2025 - Adam Wonak - adam.wonak@gmail.com
@ -52,8 +52,8 @@ class StateManager {
// This struct holds the data that identifies the firmware version. // This struct holds the data that identifies the firmware version.
struct Metadata { struct Metadata {
char sketch_name[12]; char sketch_name[16];
char version[5]; char version[16];
// Additional global/hardware settings // Additional global/hardware settings
byte selected_save_slot; byte selected_save_slot;
bool encoder_reversed; bool encoder_reversed;