mirror of https://github.com/ArduPilot/ardupilot
Fix the return value from ::save() on AP_Var_groups so that the caller can verify that a save was successful.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@1706 f9c3cf11-9bcb-44bc-f272-b75c42450872
This commit is contained in:
parent
da74d32c94
commit
57bead1964
|
@ -182,6 +182,11 @@ bool AP_Var::save(void)
|
||||||
|
|
||||||
// serialize the variable into the buffer and work out how big it is
|
// serialize the variable into the buffer and work out how big it is
|
||||||
size = serialize(vbuf, sizeof(vbuf));
|
size = serialize(vbuf, sizeof(vbuf));
|
||||||
|
if (0 == size) {
|
||||||
|
// variable cannot be serialised into the buffer
|
||||||
|
debug("cannot save (too big or not supported)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// if it fit in the buffer, save it to EEPROM
|
// if it fit in the buffer, save it to EEPROM
|
||||||
if (size <= sizeof(vbuf)) {
|
if (size <= sizeof(vbuf)) {
|
||||||
|
@ -217,6 +222,10 @@ bool AP_Var::load(void)
|
||||||
// XXX should check size in EEPROM var header too...
|
// XXX should check size in EEPROM var header too...
|
||||||
//
|
//
|
||||||
size = serialize(NULL, 0);
|
size = serialize(NULL, 0);
|
||||||
|
if (0 == size) {
|
||||||
|
debug("cannot load (too big or not supported)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Read the buffer from EEPROM, now that _EEPROM_locate
|
// Read the buffer from EEPROM, now that _EEPROM_locate
|
||||||
// has converted _key into an EEPROM address.
|
// has converted _key into an EEPROM address.
|
||||||
|
@ -627,7 +636,15 @@ AP_Var_group::_serialize_unserialize(void *buf, size_t buf_size, bool do_seriali
|
||||||
debug("unserialize %p -> %u", vp, size);
|
debug("unserialize %p -> %u", vp, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX HANDLE ERRORS HERE
|
// Unserialize will return zero if the buffer is too small
|
||||||
|
// Serialize will only return zero if the variable cannot be serialised
|
||||||
|
// Either case is fatal for any operation we might be trying.
|
||||||
|
//
|
||||||
|
if (0 == size) {
|
||||||
|
debug("group (un)serialize failed, buffer too small or not supported");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Account for the space that this variable consumes in the buffer
|
// Account for the space that this variable consumes in the buffer
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue