Fix return value from newgame_undo_deserialise_read.

The read function used by midend_deserialise and friends is expected
never to perform a partial read (the main deserialisation code always
knows how many bytes it can expect to see), so it's specified to
return simply TRUE or FALSE for success/failure, rather than the
number of bytes read.

This probably wasn't breaking anything, since in the case of
deserialising from an internal memory buffer a short read could only
arise due to an outright bug constructing the buffer. But now I've
spotted it, I should fix it.
This commit is contained in:
Simon Tatham
2018-06-21 19:02:21 +01:00
parent 3618f6a07f
commit 1d9cf25f27

View File

@ -564,10 +564,12 @@ static int newgame_undo_deserialise_read(void *ctx, void *buf, int len)
{
struct newgame_undo_deserialise_read_ctx *const rctx = ctx;
int use = min(len, rctx->len - rctx->pos);
memcpy(buf, rctx->ser->buf + rctx->pos, use);
rctx->pos += use;
return use;
if (len > rctx->len - rctx->pos)
return FALSE;
memcpy(buf, rctx->ser->buf + rctx->pos, len);
rctx->pos += len;
return TRUE;
}
struct newgame_undo_deserialise_check_ctx {