Hello Carsten,
thank you for the patch. There are two places I'm not sure about.
First, in file OSGExceptionBinaryDataHandler.inl line 741 and 755:
inline
void ExceptionBinaryDataHandler::getValues(Real32 *value,
UInt32 size ) throw (ReadError)
{
get(value, size * sizeof(Real32));
#if BYTE_ORDER == LITTLE_ENDIAN
if(_networkOrder == true)
{
osgSwapMemy<sizeof(Real32)>(value, size);
}
#endif
}
inline
void ExceptionBinaryDataHandler::getValues(Real64 *value,
UInt32 size ) throw (ReadError)
{
get(value, size * sizeof(Real64));
#if BYTE_ORDER == LITTLE_ENDIAN
if(_networkOrder == true)
{
osgSwapMemy<sizeof(Real64)>(value, size);
}
#endif
}
IMHO the calling code might be victim of the same problem? I have not
checked for the calling code but what happens if the array *value is copied
after applying this function?
Second, in file OSGBaseFunctions.inl 3242, 3266, 3293, 3378,3396 and 3414
after application of the patch:
For example
inline
OSG::Real32 osghtonf(OSG::Real32 src)
{
#if BYTE_ORDER == LITTLE_ENDIAN
UInt8 *p = reinterpret_cast<UInt8 *>(&src);
std::swap(p[0], p[3]);
std::swap(p[1], p[2]);
#endif
return src;
}
inline
OSG::Real32 osgntohf(OSG::Real32 src)
{
return osghtonf(src);
}
Same reasoning here. After changing the byte order the coying as reals is
not save. What do you think. Do I have a false reasoning here?
Best,
Johannes
------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users