[PPL-devel] [GIT] ppl/ppl(master): Added assert to check for possible overflow.
Abramo Bagnara
abramo.bagnara at gmail.com
Mon Apr 20 16:50:50 CEST 2009
Module: ppl/ppl
Branch: master
Commit: 2956e3e5df7090d8f92bf5337f40249a3732981c
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=2956e3e5df7090d8f92bf5337f40249a3732981c
Author: Abramo Bagnara <abramo.bagnara at gmail.com>
Date: Mon Apr 20 16:48:58 2009 +0200
Added assert to check for possible overflow.
---
src/Bit_Row.inlines.hh | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/Bit_Row.inlines.hh b/src/Bit_Row.inlines.hh
index c681c8a..5084a64 100644
--- a/src/Bit_Row.inlines.hh
+++ b/src/Bit_Row.inlines.hh
@@ -52,11 +52,13 @@ Bit_Row::Bit_Row(const Bit_Row& y, const Bit_Row& z) {
const mp_size_t y_size = y.vec->_mp_size;
const mp_size_t z_size = z.vec->_mp_size;
if (y_size < z_size) {
- mpz_init2(vec, z_size*PPL_BITS_PER_GMP_LIMB);
+ assert(z_size <= ULONG_MAX / PPL_BITS_PER_GMP_LIB);
+ mpz_init2(vec, z_size * PPL_BITS_PER_GMP_LIMB);
union_helper(y, z);
}
else {
- mpz_init2(vec, y_size*PPL_BITS_PER_GMP_LIMB);
+ assert(y_size <= ULONG_MAX / PPL_BITS_PER_GMP_LIB);
+ mpz_init2(vec, y_size * PPL_BITS_PER_GMP_LIMB);
union_helper(z, y);
}
}
@@ -133,11 +135,13 @@ set_union(const Bit_Row& x, const Bit_Row& y, Bit_Row& z) {
const mp_size_t x_size = x.vec->_mp_size;
const mp_size_t y_size = y.vec->_mp_size;
if (x_size < y_size) {
- mpz_realloc2(z.vec, y_size*PPL_BITS_PER_GMP_LIMB);
+ assert(y_size <= ULONG_MAX / PPL_BITS_PER_GMP_LIB);
+ mpz_realloc2(z.vec, y_size * PPL_BITS_PER_GMP_LIMB);
z.union_helper(x, y);
}
else {
- mpz_realloc2(z.vec, x_size*PPL_BITS_PER_GMP_LIMB);
+ assert(x_size <= ULONG_MAX / PPL_BITS_PER_GMP_LIB);
+ mpz_realloc2(z.vec, x_size * PPL_BITS_PER_GMP_LIMB);
z.union_helper(y, x);
}
}
More information about the PPL-devel
mailing list