]> granicus.if.org Git - python/commit
k_mul(): White-box testing turned up that (ah+al)*(bh+bl) can, in rare
authorTim Peters <tim.peters@gmail.com>
Mon, 12 Aug 2002 19:30:26 +0000 (19:30 +0000)
committerTim Peters <tim.peters@gmail.com>
Mon, 12 Aug 2002 19:30:26 +0000 (19:30 +0000)
commitd8b2173ef97edecadcc171dc5fce95ee13ee9d3d
treec8ef60a075973bfecf6b8e67c6eb8ad40e8f4eae
parent3747a0f04c1dbe5abb47ce80abea39ed02c01aa2
k_mul():  White-box testing turned up that (ah+al)*(bh+bl) can, in rare
cases, overflow the allocated result object by 1 bit.  In such cases,
it would have been brought back into range if we subtracted al*bl and
ah*bh from it first, but I don't want to do that because it hurts cache
behavior.  Instead we just ignore the excess bit when it appears -- in
effect, this is forcing unsigned mod BASE**(asize + bsize) arithmetic
in a case where that doesn't happen all by itself.
Objects/longobject.c