Null check before writing to pointer

In the serial api for libdivecomputer is ok to send NULL as the int
pointer actual, if you dont't care about how many bytes that where
actually read or written.

This makes sure we don't crash if the ble backend where ever used with
such a backend.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
This commit is contained in:
Anton Lundin 2017-07-12 21:23:02 +02:00 committed by Dirk Hohndel
parent 15962add7a
commit 7c6fa227ea

View file

@ -172,7 +172,8 @@ dc_status_t BLEObject::write(const void *data, size_t size, size_t *actual)
dc_status_t BLEObject::read(void *data, size_t size, size_t *actual)
{
*actual = 0;
if (actual)
*actual = 0;
if (receivedPackets.isEmpty()) {
QList<QLowEnergyCharacteristic> list = preferredService()->characteristics();
if (list.isEmpty())
@ -198,7 +199,8 @@ dc_status_t BLEObject::read(void *data, size_t size, size_t *actual)
return DC_STATUS_NOMEMORY;
memcpy((char *)data, packet.data(), packet.size());
*actual += packet.size();
if (actual)
*actual += packet.size();
return DC_STATUS_SUCCESS;
}