Skip to content

Commit 523726f

Browse files
committed
flash: use malloc
1 parent a14572c commit 523726f

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/core/flash.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "core/flash.h"
22

3+
#include <stdlib.h>
34
#include <string.h>
45

56
#include "core/failloop.h"
@@ -40,14 +41,18 @@ void flash_save() {
4041

4142
__disable_irq();
4243

44+
uint8_t *buffer = (uint8_t *)malloc(PROFILE_STORAGE_SIZE);
45+
if (buffer == NULL) {
46+
failloop(FAILLOOP_FAULT);
47+
}
48+
4349
fmc_unlock();
4450
fmc_erase();
4551

4652
{
4753
const uint32_t offset = TARGET_STORAGE_OFFSET;
4854
const uint32_t size = TARGET_STORAGE_SIZE;
4955

50-
uint8_t buffer[size];
5156
memset(buffer, 0, size);
5257
flash_write_magic(buffer, FMC_MAGIC | TARGET_STORAGE_OFFSET);
5358

@@ -68,7 +73,6 @@ void flash_save() {
6873
const uint32_t offset = FLASH_STORAGE_OFFSET;
6974
const uint32_t size = FLASH_STORAGE_SIZE;
7075

71-
uint8_t buffer[size];
7276
memset(buffer, 0, size);
7377
flash_write_magic(buffer, FMC_MAGIC | FLASH_STORAGE_OFFSET);
7478
memcpy(buffer + FMC_MAGIC_SIZE, (uint8_t *)&flash_storage, sizeof(flash_storage_t));
@@ -79,7 +83,6 @@ void flash_save() {
7983
const uint32_t offset = BIND_STORAGE_OFFSET;
8084
const uint32_t size = BIND_STORAGE_SIZE;
8185

82-
uint8_t buffer[size];
8386
memset(buffer, 0, size);
8487
flash_write_magic(buffer, FMC_MAGIC | BIND_STORAGE_OFFSET);
8588

@@ -96,7 +99,6 @@ void flash_save() {
9699
const uint32_t offset = PROFILE_STORAGE_OFFSET;
97100
const uint32_t size = PROFILE_STORAGE_SIZE;
98101

99-
uint8_t buffer[size];
100102
memset(buffer, 0, size);
101103
flash_write_magic(buffer, FMC_MAGIC | PROFILE_STORAGE_OFFSET);
102104

@@ -118,7 +120,6 @@ void flash_save() {
118120
const uint32_t offset = VTX_STORAGE_OFFSET;
119121
const uint32_t size = VTX_STORAGE_SIZE;
120122

121-
uint8_t buffer[size];
122123
flash_write_magic(buffer, FMC_MAGIC | VTX_STORAGE_OFFSET);
123124

124125
cbor_value_t enc;
@@ -136,16 +137,20 @@ void flash_save() {
136137
#endif
137138

138139
fmc_lock();
140+
free(buffer);
139141
__enable_irq();
140142
}
141143

142144
void flash_load() {
145+
uint8_t *buffer = (uint8_t *)malloc(PROFILE_STORAGE_SIZE);
146+
if (buffer == NULL) {
147+
failloop(FAILLOOP_FAULT);
148+
}
143149

144150
if (flash_compare_magic(TARGET_STORAGE_OFFSET, (FMC_MAGIC | TARGET_STORAGE_OFFSET))) {
145151
const uint32_t offset = TARGET_STORAGE_OFFSET + FMC_MAGIC_SIZE;
146152
const uint32_t size = TARGET_STORAGE_SIZE - FMC_MAGIC_SIZE;
147153

148-
uint8_t buffer[size];
149154
fmc_read_buf(offset, buffer, size);
150155

151156
cbor_value_t dec;
@@ -161,8 +166,6 @@ void flash_load() {
161166
const uint32_t offset = FLASH_STORAGE_OFFSET + FMC_MAGIC_SIZE;
162167
const uint32_t size = FLASH_STORAGE_SIZE - FMC_MAGIC_SIZE;
163168

164-
uint8_t buffer[size];
165-
166169
fmc_read_buf(offset, buffer, size);
167170
memcpy((uint8_t *)&flash_storage, buffer, sizeof(flash_storage_t));
168171
}
@@ -171,8 +174,6 @@ void flash_load() {
171174
const uint32_t offset = BIND_STORAGE_OFFSET + FMC_MAGIC_SIZE;
172175
const uint32_t size = BIND_STORAGE_SIZE - FMC_MAGIC_SIZE;
173176

174-
uint8_t buffer[size];
175-
176177
fmc_read_buf(offset, buffer, size);
177178
memcpy((uint8_t *)&bind_storage, buffer, sizeof(rx_bind_storage_t));
178179

@@ -193,7 +194,6 @@ void flash_load() {
193194
const uint32_t offset = PROFILE_STORAGE_OFFSET + FMC_MAGIC_SIZE;
194195
const uint32_t size = PROFILE_STORAGE_SIZE - FMC_MAGIC_SIZE;
195196

196-
uint8_t buffer[size];
197197
fmc_read_buf(offset, buffer, size);
198198

199199
cbor_value_t dec;
@@ -210,8 +210,6 @@ void flash_load() {
210210
const uint32_t offset = VTX_STORAGE_OFFSET + FMC_MAGIC_SIZE;
211211
const uint32_t size = VTX_STORAGE_SIZE - FMC_MAGIC_SIZE;
212212

213-
uint8_t buffer[size];
214-
215213
fmc_read_buf(offset, buffer, size);
216214

217215
cbor_value_t dec;
@@ -223,4 +221,6 @@ void flash_load() {
223221
}
224222
}
225223
#endif
224+
225+
free(buffer);
226226
}

0 commit comments

Comments
 (0)