From: <bo...@us...> - 2003-12-11 02:56:52
|
Update of /cvsroot/sharedaemon/core/src In directory sc8-pr-cvs1:/tmp/cvs-serv30278 Modified Files: ParseClass.cpp Log Message: Fixed little endian / big endian conversion bug in method IncrementalReadNonArray and added conversion support in method IncrementalReadArray Index: ParseClass.cpp =================================================================== RCS file: /cvsroot/sharedaemon/core/src/ParseClass.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- ParseClass.cpp 9 Dec 2003 00:16:29 -0000 1.12 +++ ParseClass.cpp 11 Dec 2003 02:56:49 -0000 1.13 @@ -430,6 +430,27 @@ buffer +=size*n; buffsize-=size*n; done +=size*n; + + switch (type->type_id) { + case WORD: + while (n--) { + *(u16*)(data+size*n )=ltoh16(*(u16*)(data+size*n )); + } + break; + + case DWORD: + while (n--) { + *(u32*)(data+size*n )=ltoh32(*(u32*)(data+size*n )); + } + break; + + case IPPORT: + while (n--) { + *(u32*)(data+size*n )=btoh32(*(u32*)(data+size*n )); + *(u16*)(data+size*n+4)=ltoh16(*(u16*)(data+size*n+4)); + } + break; + } } return done; @@ -552,7 +573,7 @@ case BYTE: scalar=true; * dataptr =val= * buffer ; break; case WORD: scalar=true; *(u16*) dataptr =val=ltoh16(*(u16*) buffer) ; break; case DWORD: scalar=true; *(u32*) dataptr =val=ltoh32(*(u32*) buffer) ; break; - case IPPORT: scalar=false; *(u32*) dataptr = lton32(*(u32*) buffer ); + case IPPORT: scalar=false; *(u32*) dataptr = btoh32(*(u32*) buffer ); *(u16*)(dataptr+4)= ltoh16(*(u16*)(buffer+4)); break; default: scalar=false; |