summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-01-07 20:13:28 -0800
committerKeith Packard <keithp@keithp.com>2011-01-07 20:16:00 -0800
commit73620c41017c1774d6190dfd4be5b742eb64f8d3 (patch)
treebe224b82451fd74c5ebcc6b2a225c930f947a2b4
parentedd22ee49adf60c35f2fe6ba97c111b7ad4131c2 (diff)
altos: ensure erase mark is written when erasing flights
It was getting called only when *failing* to erase a flight (oops), secondly, it wasn't getting written because ao_storage_flush wasn't getting called. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/ao_log.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/ao_log.c b/src/ao_log.c
index f319834a..55b9dfff 100644
--- a/src/ao_log.c
+++ b/src/ao_log.c
@@ -170,6 +170,7 @@ ao_log_write_erase(uint8_t pos)
erase.unused = 0x00;
erase.flight = ao_flight_number;
ao_storage_write(ao_log_erase_pos(pos), &erase, sizeof (erase));
+ ao_storage_flush();
}
static void
@@ -350,6 +351,7 @@ ao_log_delete(void) __reentrant
/* Look for the flight log matching the requested flight */
for (slot = 0; slot < slots; slot++) {
if (ao_log_flight(slot) == ao_cmd_lex_i) {
+ ao_log_erase_mark();
ao_log_current_pos = ao_log_pos(slot);
ao_log_end_pos = ao_log_current_pos + ao_config.flight_log_max;
while (ao_log_current_pos < ao_log_end_pos) {
@@ -374,7 +376,6 @@ ao_log_delete(void) __reentrant
return;
}
}
- ao_log_erase_mark();
printf("No such flight: %d\n", ao_cmd_lex_i);
}