summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/datatype.c3
-rw-r--r--src/evaluate.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/datatype.c b/src/datatype.c
index 8583531f..91e5ed6d 100644
--- a/src/datatype.c
+++ b/src/datatype.c
@@ -51,6 +51,7 @@ static const struct datatype *datatypes[TYPE_MAX + 1] = {
void datatype_register(const struct datatype *dtype)
{
+ BUILD_BUG_ON(TYPE_MAX & ~TYPE_MASK);
datatypes[dtype->type] = dtype;
}
@@ -939,7 +940,7 @@ const struct datatype *concat_type_alloc(const struct expr *expr)
strncat(desc, i->dtype->desc, sizeof(desc) - strlen(desc) - 1);
strncat(name, i->dtype->name, sizeof(name) - strlen(name) - 1);
- type <<= 8;
+ type <<= TYPE_BITS;
type |= i->dtype->type;
size += i->dtype->size;
subtypes++;
diff --git a/src/evaluate.c b/src/evaluate.c
index 79edf021..9cb2376a 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -617,7 +617,7 @@ static int expr_evaluate_concat(struct eval_ctx *ctx, struct expr **expr)
"unexpected concat component, "
"expecting %s",
dtype->desc);
- tmp = datatype_lookup((type >> 8 * --off) & 0xff);
+ tmp = datatype_lookup((type >> TYPE_BITS * --off) & TYPE_MASK);
expr_set_context(&ctx->ectx, tmp, tmp->size);
if (list_member_evaluate(ctx, &i) < 0)