diff --git a/dmd/statement.c b/dmd/statement.c index c48d7b70..135f4912 100644 --- a/dmd/statement.c +++ b/dmd/statement.c @@ -1638,7 +1638,7 @@ Statement *ForeachStatement::semantic(Scope *sc) Expressions *exps = new Expressions(); exps->push(aggr); size_t keysize = taa->key->size(); - keysize = (keysize + 3) & ~3; + keysize = (keysize + (PTRSIZE-1)) & ~(PTRSIZE-1); exps->push(new IntegerExp(0, keysize, Type::tsize_t)); // LDC paint delegate argument to the type runtime expects diff --git a/dmd2/statement.c b/dmd2/statement.c index b3a3f2c4..0a1afb8a 100644 --- a/dmd2/statement.c +++ b/dmd2/statement.c @@ -1652,7 +1652,7 @@ Statement *ForeachStatement::semantic(Scope *sc) Expressions *exps = new Expressions(); exps->push(aggr); size_t keysize = taa->index->size(); - keysize = (keysize + 3) & ~3; + keysize = (keysize + (PTRSIZE-1)) & ~(PTRSIZE-1); exps->push(new IntegerExp(0, keysize, Type::tsize_t)); // LDC paint delegate argument to the type runtime expects