commit | e3c8095336249182b6a8871747df3cc99640103a | [log] [tgz] |
---|---|---|
author | Erik de Castro Lopo <erikd@mega-nerd.com> | Sun Aug 23 08:08:27 2015 +1000 |
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | Sun Aug 23 08:51:44 2015 +1000 |
tree | 7957bdd83329df71b2ecf9bf1ffa885f3de15206 | |
parent | b18d8d50bd6badda5a92195fb8cab51939bcee2a [diff] |
libFLAC/bitwriter.c: Fix undefined behaviour Improve folding of signed to unsgned to avoid UB.
diff --git a/src/libFLAC/bitwriter.c b/src/libFLAC/bitwriter.c index 76be1bc..dcdd93e 100644 --- a/src/libFLAC/bitwriter.c +++ b/src/libFLAC/bitwriter.c
@@ -520,7 +520,9 @@ while(nvals) { /* fold signed to unsigned; actual formula is: negative(v)? -2v-1 : 2v */ - uval = (*vals<<1) ^ (*vals>>31); + uval = *vals; + uval <<= 1; + uval ^= (*vals>>31); msbits = uval >> parameter;