X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/balance2?a=blobdiff_plain;f=src%2Freadwrite.c;h=2b6823adfa9bee472eb70ed9474371b607d8b46e;hb=ad3f7d4d420b5447d756be1eaaf78f0abd1a5f65;hp=039dadea4a6855e1f2222241193897db4f987b4c;hpb=4d9b6ac142740aa337fc3e622902c9595c36f6d0;p=plomrogue diff --git a/src/readwrite.c b/src/readwrite.c index 039dade..2b6823a 100644 --- a/src/readwrite.c +++ b/src/readwrite.c @@ -58,6 +58,11 @@ static uint8_t write_uintX_bigendian(FILE * file, uint32_t x, uint8_t size) extern uint8_t read_uint8(FILE * file, uint8_t * x) { + /* Since read_uintX_bigendian() works on -- and zeroes -- four bytes, work + * on values of fewer bytes corrupts their immediate neighbor bytes. This + * necessitates working on newly acquired separate memory areas (* y), only + * copying the sufficiently small end result to * x. + */ uint32_t y = * x; uint8_t err = read_uintX_bigendian(file, &y, 8); * x = (uint8_t) y; @@ -68,6 +73,7 @@ extern uint8_t read_uint8(FILE * file, uint8_t * x) extern uint8_t read_uint16_bigendian(FILE * file, uint16_t * x) { + /* See read_uint8() introductory comment for rationale. */ uint32_t y = * x; uint8_t err = read_uintX_bigendian(file, &y, 16); * x = (uint16_t) y;