diff -r 88f2e8c4face -r 71d559ec66d7 master/slave.c --- a/master/slave.c Mon Jul 31 18:52:06 2006 +0000 +++ b/master/slave.c Tue Aug 01 14:15:33 2006 +0000 @@ -1508,20 +1508,23 @@ { ec_eeprom_pdo_t *pdo; ec_eeprom_pdo_entry_t *pdo_entry; - uint16_t size; + unsigned int bit_size; if (sync->length) return sync->length; - size = 0; + bit_size = 0; list_for_each_entry(pdo, &slave->eeprom_pdos, list) { if (pdo->sync_manager != sync->index) continue; list_for_each_entry(pdo_entry, &pdo->entries, list) { - size += pdo_entry->bit_length / 8; - } - } - - return size; + bit_size += pdo_entry->bit_length; + } + } + + if (bit_size % 8) // round up to full bytes + return bit_size / 8 + 1; + else + return bit_size / 8; } /******************************************************************************