|
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;
|