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,8 +228,14 @@ void HandleEncoderPressed() {
if (app.selected_sub_param < StateManager::MAX_SAVE_SLOTS) {
app.selected_save_slot = app.selected_sub_param;
stateManager.loadData(app, app.selected_save_slot);
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;
case PARAM_MAIN_FACTORY_RESET:
if (app.selected_sub_param == 0) { // Erase

View File

@ -2,7 +2,7 @@
* @file save_state.cpp
* @author Adam Wonak (https://github.com/awonak/)
* @brief Alt firmware version of Gravity by Sitka Instruments.
* @version 2.0.1
* @version 2.0.0
* @date 2025-07-04
*
* @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.
_loadState(app, slot_index);
app.selected_save_slot = slot_index;
// Persist this change in the global metadata.
_saveMetadata(app);
// Persist this change in the global metadata on next update.
_isDirty = true;
return true;
}

View File

@ -2,7 +2,7 @@
* @file save_state.h
* @author Adam Wonak (https://github.com/awonak/)
* @brief Alt firmware version of Gravity by Sitka Instruments.
* @version 2.0.1
* @version 2.0.0
* @date 2025-07-04
*
* @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.
struct Metadata {
char sketch_name[12];
char version[5];
char sketch_name[16];
char version[16];
// Additional global/hardware settings
byte selected_save_slot;
bool encoder_reversed;