home
·
contact
·
privacy
projects
/
plomrogue
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4d9b6ac
)
Added explanatory comments to readwrite library.
author
Christian Heller
<c.heller@plomlompom.de>
Thu, 15 Aug 2013 11:43:53 +0000
(13:43 +0200)
committer
Christian Heller
<c.heller@plomlompom.de>
Thu, 15 Aug 2013 11:43:53 +0000
(13:43 +0200)
src/readwrite.c
patch
|
blob
|
history
diff --git
a/src/readwrite.c
b/src/readwrite.c
index 039dadea4a6855e1f2222241193897db4f987b4c..2b6823adfa9bee472eb70ed9474371b607d8b46e 100644
(file)
--- 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)
{
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;
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)
{
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;
uint32_t y = * x;
uint8_t err = read_uintX_bigendian(file, &y, 16);
* x = (uint16_t) y;