Fix bug in ecx_readIDNmap(), Osize and Isize

Osize and Isize where reset to 16 at every new drive number, thus loosing all lower drive mapping data. Changed to add 16 to Osize and Isize.
This commit is contained in:
ArthurKetels 2020-10-01 23:00:01 +02:00 committed by GitHub
parent f69b1ab702
commit cbc8f36e87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 2 deletions

View File

@ -329,7 +329,7 @@ int ecx_readIDNmap(ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
if ((wkc > 0) && (psize >= 4) && ((entries = etohs(SoEmapping.currentlength) / 2) > 0) && (entries <= EC_SOE_MAXMAPPING)) if ((wkc > 0) && (psize >= 4) && ((entries = etohs(SoEmapping.currentlength) / 2) > 0) && (entries <= EC_SOE_MAXMAPPING))
{ {
/* command word (uint16) is always mapped but not in list */ /* command word (uint16) is always mapped but not in list */
*Osize = 16; *Osize += 16;
for (itemcount = 0 ; itemcount < entries ; itemcount++) for (itemcount = 0 ; itemcount < entries ; itemcount++)
{ {
psize = sizeof(SoEattribute); psize = sizeof(SoEattribute);
@ -348,7 +348,7 @@ int ecx_readIDNmap(ecx_contextt *context, uint16 slave, int *Osize, int *Isize)
if ((wkc > 0) && (psize >= 4) && ((entries = etohs(SoEmapping.currentlength) / 2) > 0) && (entries <= EC_SOE_MAXMAPPING)) if ((wkc > 0) && (psize >= 4) && ((entries = etohs(SoEmapping.currentlength) / 2) > 0) && (entries <= EC_SOE_MAXMAPPING))
{ {
/* status word (uint16) is always mapped but not in list */ /* status word (uint16) is always mapped but not in list */
*Isize = 16; *Isize += 16;
for (itemcount = 0 ; itemcount < entries ; itemcount++) for (itemcount = 0 ; itemcount < entries ; itemcount++)
{ {
psize = sizeof(SoEattribute); psize = sizeof(SoEattribute);