Thread (10 messages) 10 messages, 4 authors, 2012-04-29

Re: [PATCH 1/2] Fix sign extension of bitmap_offset in super1.c

From: Jes Sorensen <hidden>
Date: 2012-04-26 15:36:10

On 04/26/12 17:32, Richard Henderson wrote:
On 04/26/12 08:25, Jes Sorensen wrote:
quoted
Just checking mdadm.h and bswap32() is defined like this:

#define bswap_32(x) (((x) & 0x000000ffU) << 24 | \
                     ((x) & 0xff000000U) >> 24 | \
                     ((x) & 0x0000ff00U) << 8  | \
                     ((x) & 0x00ff0000U) >> 8)

so I am not 100% sure just swapping to an s32 in the struct will work on
big endian systems? Will the 0x000000ffU not force the conversion back
to unsigned or what happens in this case?
This is actually semi-complicated.  c89 or c99 rules?  X already of a
type larger than unsigned int?
This is what I was afraid of :)
But if X is signed int, this entire expression will always be unsigned.

You're certainly better off with a cast as we discussed on irc.
In this particular case X would be a signed int, so we would end up with
unsigned and still need the cast.

I will opt for the cast in this case - thanks a lot for the clarification.

Cheers,
Jes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help