summaryrefslogtreecommitdiffstats
path: root/Modules/_decimal
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2012-04-18 15:48:34 (GMT)
committerStefan Krah <skrah@bytereef.org>2012-04-18 15:48:34 (GMT)
commit140893cbaa086e0bcef9c47c11eaddd3015089c5 (patch)
tree53bba0c22e1142810489c02180d579d020d7f9a8 /Modules/_decimal
parent447f0cc38673cfea3a6ede5aaf11e80e8e8181b2 (diff)
downloadcpython-140893cbaa086e0bcef9c47c11eaddd3015089c5.zip
cpython-140893cbaa086e0bcef9c47c11eaddd3015089c5.tar.gz
cpython-140893cbaa086e0bcef9c47c11eaddd3015089c5.tar.bz2
The previous code is correct, but hard to verify: The libmpdec documentation
rightfully states that an mpd_t with a coefficient flagged as MPD_CONST_DATA must not be in the position of the result operand. In this particular case several assumptions guarantee that a resize will never occur in all possible code paths, which was the reason for using MPD_CONST_DATA and saving an instruction by omitting the initialization of tmp.alloc. For readability, tmp is now flagged as MPD_STATIC_DATA and tmp.alloc is initialized.
Diffstat (limited to 'Modules/_decimal')
-rw-r--r--Modules/_decimal/libmpdec/mpdecimal.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/Modules/_decimal/libmpdec/mpdecimal.c b/Modules/_decimal/libmpdec/mpdecimal.c
index 844f238..f0ebca8 100644
--- a/Modules/_decimal/libmpdec/mpdecimal.c
+++ b/Modules/_decimal/libmpdec/mpdecimal.c
@@ -1280,7 +1280,8 @@ _mpd_qget_uint(int use_sign, const mpd_t *a, uint32_t *status)
/* At this point a->digits+a->exp <= MPD_RDIGITS+1,
* so the shift fits. */
tmp.data = tmp_data;
- tmp.flags = MPD_STATIC|MPD_CONST_DATA;
+ tmp.flags = MPD_STATIC|MPD_STATIC_DATA;
+ tmp.alloc = 2;
mpd_qsshiftr(&tmp, a, -a->exp);
tmp.exp = 0;
a = &tmp;