math: fix pow signed shift ub
authorSzabolcs Nagy <nsz@port70.net>
Tue, 4 Oct 2016 01:58:56 +0000 (03:58 +0200)
committerRich Felker <dalias@aerifal.cx>
Thu, 20 Oct 2016 05:32:27 +0000 (01:32 -0400)
commit688d3da0f1730daddbc954bbc2d27cc96ceee04c
tree3f769f22d7cb42a40eb618535bc31ae3c0fd5d90
parent87643335ac699b14527bbf807956cf8911b86bfa
math: fix pow signed shift ub

j is int32_t and thus j<<31 is undefined if j==1, so j is changed to
uint32_t locally as a quick fix, the generated code is not affected.

(this is a strict conformance fix, future c standard may allow 1<<31,
see DR 463.  the bug was inherited from freebsd fdlibm, the proper fix
is to use uint32_t for all bit hacks, but that requires more intrusive
changes.)

reported by Daniel Sabogal
src/math/pow.c