Messages in this thread | | | Subject | Re: [PATCH] Re: [ipchains] logging tcp/udp port numbers | Date | Thu, 19 Nov 1998 18:06:10 -0500 | From | "Brandon S. Allbery KF8NH" <> |
| |
In message <730l68$95r$1@palladium.transmeta.com>, H. Peter Anvin writes: +----- | The error occurs on bigendian machines because you're effectively | doing the moral equivalent of: | | foo = *(short *)(&args[n--]); | | instead of | | foo = (short) *(int *)(&args[n--]); | | ... which is the same of littleendian boxen but not bigendian. +--->8
The actual expression is more like
__internal_argp = (void *) &args; foo = *((short *) __internal_argp)++;
so while you get the correct value on little-endian, the next value will be taken from the wrong address.
-- brandon s. allbery [os/2][linux][solaris][japh] allbery@kf8nh.apk.net system administrator [WAY too many hats] allbery@ece.cmu.edu carnegie mellon / electrical and computer engineering KF8NH Kiss my bits, Billy-boy.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |