I've checked in a change that should fix this.

A couple of rules for developers:

        1) If you're doing 64-bit arithmetic, and assigning the result to a  
32-bit quantity:

                1) make sure that either the result will always fit in 32 bits, 
you  
check for results that don't fit and handle that case with the  
appropriate error handling, or you're willing to live with a bogus  
result if it doesn't fit;

                2) once you've done any checking for results that don't fit, if 
 
you're doing any, explicitly cast the result to the type of the item  
to which you're assigning it, so that the compiler knows you're aware  
of the issue and have done what you consider appropriate, and won't  
warn you about it.

        2) Do NOT create 64-bit integral constants by sticking "LL" at the  
end of the constant; MSVC++ 6.0, for example, doesn't recognize that.   
Instead, wrap the constant in G_GINT64_CONSTANT(), e.g. don't do  
"0x123456789abcLL", do "G_GINT64_CONSTANT(0x123456789abc)".

The latter of those is covered in the "Portability" section of doc/ 
README.developer; that section lists a number of rules for  
portability, many of which are there because of code submitted to  
Ethereal/Wireshark that, for example, "worked in GCC" but failed in  
other compilers.

The former of those arguably should be covered in doc/README.developer  
as well.
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to