After 79d2eb29c755 it is no longer necessary to zero the output array:
None of the _mpd_shortadd() or _mpd_shortmul() functions read uninitialized
values. Previously zeroing was required since _mpd_real_size() was called
on the output array.
diff --git a/Modules/_decimal/libmpdec/mpdecimal.c b/Modules/_decimal/libmpdec/mpdecimal.c
index b5f7808..b234400 100644
--- a/Modules/_decimal/libmpdec/mpdecimal.c
+++ b/Modules/_decimal/libmpdec/mpdecimal.c
@@ -7707,7 +7707,7 @@
wlen = n+1;
}
(*w)[n++] = (uint32_t)_mpd_shortdiv_b(u, u, ulen, wbase, ubase);
- /* ulen will be at least 1. u[ulen-1] can only be zero if ulen == 1 */
+ /* ulen is at least 1. u[ulen-1] can only be zero if ulen == 1. */
ulen = _mpd_real_size(u, ulen);
} while (u[ulen-1] != 0);
@@ -8041,7 +8041,7 @@
usrc[n] = srcdata[n];
}
- if (!mpd_qresize_zero(result, rlen, status)) {
+ if (!mpd_qresize(result, rlen, status)) {
goto finish;
}
@@ -8084,7 +8084,7 @@
return;
}
- if (!mpd_qresize_zero(result, rlen, status)) {
+ if (!mpd_qresize(result, rlen, status)) {
return;
}
@@ -8094,7 +8094,7 @@
status);
#else
if (srcbase == MPD_RADIX) {
- if (!mpd_qresize_zero(result, srclen, status)) {
+ if (!mpd_qresize(result, srclen, status)) {
return;
}
memcpy(result->data, srcdata, srclen * (sizeof *srcdata));