diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 34b2a6a59e..291a210966 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2009-11-02 Ralf Corsépius + + * libblock/src/bdbuf.c: Cast bdbuf->state to int32_t + before shifting << 16 (Can not shift an enum by << 16 on 16bit). + 2009-11-02 Ralf Corsépius * libfs/src/dosfs/msdos.h, libfs/src/dosfs/msdos_conv.c, diff --git a/cpukit/libblock/src/bdbuf.c b/cpukit/libblock/src/bdbuf.c index 600ae1b26b..95e89d3e1f 100644 --- a/cpukit/libblock/src/bdbuf.c +++ b/cpukit/libblock/src/bdbuf.c @@ -1088,11 +1088,11 @@ rtems_bdbuf_group_realloc (rtems_bdbuf_group* group, size_t new_bds_per_group) case RTEMS_BDBUF_STATE_CACHED: case RTEMS_BDBUF_STATE_READ_AHEAD: if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0) - rtems_fatal_error_occurred ((bd->state << 16) | + rtems_fatal_error_occurred ((((uint32_t) bd->state) << 16) | RTEMS_BLKDEV_FATAL_BDBUF_CONSISTENCY_1); break; default: - rtems_fatal_error_occurred ((bd->state << 16) | + rtems_fatal_error_occurred ((((uint32_t) bd->state) << 16) | RTEMS_BLKDEV_FATAL_BDBUF_CONSISTENCY_8); }