Fix bug in metadata save/load state.
The sketch_name char array was to short, causing a buffer overflow.
This commit is contained in:
@ -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:
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user