|
@@ -102,24 +102,22 @@ raw_block_header_t *create_raw_block(size_t raw_block_size, rb_type type) {
|
|
|
bitmap_p = (BMAP_EL_TYPE *)((char *)bitmap_rb +
|
|
|
sizeof(bitmap_rb_t));
|
|
|
for(size_t i = 0; i < bitmap_rb->elements; ++i) {
|
|
|
- *bitmap_p = BMAP_EL_INIT_VAL;
|
|
|
- bitmap_p++;
|
|
|
- }
|
|
|
-
|
|
|
- /* If there are some remaining cells, so an extra bitmap vector
|
|
|
- * element is used, the cells that cannot be used by the
|
|
|
- * application, have to be set as already used.
|
|
|
- */
|
|
|
-
|
|
|
- if(remaining_cells != 0) {
|
|
|
|
|
|
- bitmap_p--;
|
|
|
-
|
|
|
- for(size_t zeroes = BMAP_EL_SIZE_BITS - remaining_cells;
|
|
|
- zeroes > 0; --zeroes) {
|
|
|
- *bitmap_p <<= 1;
|
|
|
+ /* If there are some remaining cells, so an extra bitmap vector
|
|
|
+ * element is used, the cells that cannot be used by the
|
|
|
+ * application, have to be set as already used.
|
|
|
+ */
|
|
|
+ if(i == 0 && remaining_cells != 0) {
|
|
|
+ *bitmap_p = (BMAP_EL_TYPE) 1;
|
|
|
+ for(size_t ones = remaining_cells - 1;
|
|
|
+ ones > 0; --ones) {
|
|
|
+ *bitmap_p <<= 1;
|
|
|
+ (*bitmap_p)++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ *bitmap_p = BMAP_EL_INIT_VAL;
|
|
|
}
|
|
|
-
|
|
|
+ bitmap_p++;
|
|
|
}
|
|
|
|
|
|
break;
|