diff -r 55be5b85501c -r 44ce74232ccb src/sync.c --- a/src/sync.c Fri May 25 15:48:34 2007 +0200 +++ b/src/sync.c Fri May 25 23:57:17 2007 +0200 @@ -183,16 +183,17 @@ status = state9; case state9: /* get data to transmit */ - index = (UNS16)((*pMappingParameter) >> 16); - subIndex = (UNS8)(( (*pMappingParameter) >> (UNS8)8 ) & (UNS32)0x000000FF); + { UNS8 ByteSize; UNS8 tmp[]= {0,0,0,0,0,0,0,0}; + index = (UNS16)((*pMappingParameter) >> 16); + subIndex = (UNS8)(( (*pMappingParameter) >> (UNS8)8 ) & (UNS32)0x000000FF); Size = (UNS8)(*pMappingParameter); /* Size in bits */ ByteSize = 1 + ((Size - 1) >> 3); /*1->8 => 1 ; 9->16 => 2, ... */ objDict = getODentry(d, index, subIndex, tmp, &ByteSize, &dataType, 0 ); /* copy bit per bit in little endian*/ CopyBits(Size, ((UNS8*)tmp), 0 , 0, (UNS8*)&d->process_var.data[offset>>3], offset%8, 0); - + } if( objDict != OD_SUCCESSFUL ){ MSG_ERR(0x1013, " Couldn't find mapped variable at index-subindex-size : ", (UNS16)(*pMappingParameter)); return 0xFF;