if (err != ESP_OK && err != ESP_ERR_NVS_NOT_FOUND) return err;
// Read previously saved blob if available
- uint32_t* run_time;
+ uint32_t* run_time = malloc(required_size + sizeof(uint32_t));
if (required_size > 0) {
- run_time = malloc(required_size);
- // read previously saved blob
err = nvs_get_blob(my_handle, "run_time", run_time, &required_size);
if (err != ESP_OK) return err;
- // add extra space for the new value
- required_size += sizeof(uint32_t);
- run_time = realloc(run_time, required_size);
- } else {
- // nothing saved jet - just allocate space for the first value to save
- required_size = sizeof(uint32_t);
- run_time = malloc(required_size);
}
// Write value including previously saved blob if available
+ required_size += sizeof(uint32_t);
run_time[required_size / sizeof(uint32_t) - 1] = xTaskGetTickCount() * portTICK_PERIOD_MS;
err = nvs_set_blob(my_handle, "run_time", run_time, required_size);
if (err != ESP_OK) return err;