Support for 32 bits system.

This commit is contained in:
Patrick Pelissier committed 2020-06-14 00:17:22 +02:00
1 parent b0d2557ea1
commit 4c57ca69bc
1 file changed
+14 -4
+14 -4
View File
@@ -45,7 +45,16 @@ m_serial_bin_write_size(FILE *f, const size_t size)
b = EOF != fputc(253, f); // Save 16 bits encoding
b &= EOF != fputc((unsigned char) (size >> 8), f);
b &= EOF != fputc((unsigned char) size, f);
} else if (size < 1ULL<< 32) {
}
// For 32 bits systems, don't encode a 64 bits size_t
#if SIZE_MAX < 1ULL<< 32
b = EOF != fputc(254, f); // Save 32 bits encoding
b &= EOF != fputc((unsigned char) (size >> 24), f);
b &= EOF != fputc((unsigned char) (size >> 16), f);
b &= EOF != fputc((unsigned char) (size >> 8), f);
b &= EOF != fputc((unsigned char) size, f);
#else
else if (size < 1ULL<< 32) {
b = EOF != fputc(254, f); // Save 32 bits encoding
b &= EOF != fputc((unsigned char) (size >> 24), f);
b &= EOF != fputc((unsigned char) (size >> 16), f);
@@ -62,6 +71,7 @@ m_serial_bin_write_size(FILE *f, const size_t size)
b &= EOF != fputc((unsigned char) (size >> 8), f);
b &= EOF != fputc((unsigned char) size, f);
}
#endif
return b;
}
@@ -493,7 +503,7 @@ static inline m_serial_return_code_t
m_serial_bin_read_tuple_start(m_serial_local_t local, m_serial_read_t serial)
{
(void) serial;
local->data[1].s = 0;
local->data[1].i = 0;
return M_SERIAL_OK_CONTINUE;
}
@@ -509,8 +519,8 @@ m_serial_bin_read_tuple_id(m_serial_local_t local, m_serial_read_t serial, const
(void) serial;
(void) field_name;
(void) max;
*id = local->data[1].s;
local->data[1].s ++;
*id = local->data[1].i;
local->data[1].i ++;
return (*id == max) ? M_SERIAL_OK_DONE : M_SERIAL_OK_CONTINUE;
}