Mercurial > vim
changeset 26083:a677aa897843 v8.2.3575
patch 8.2.3575: overflow check still fails when sizeof(int) == sizeof(long)
Commit: https://github.com/vim/vim/commit/e551ccfb9311eea5252d1c3106ff7a53c762d994
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Nov 2 23:11:00 2021 +0000
patch 8.2.3575: overflow check still fails when sizeof(int) == sizeof(long)
Problem: Overflow check still fails when sizeof(int) == sizeof(long).
Solution: Use a float to check the result.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 03 Nov 2021 00:15:04 +0100 |
parents | b09f70b14a30 |
children | c83eab168e0a |
files | src/register.c src/version.c |
diffstat | 2 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/register.c +++ b/src/register.c @@ -2011,12 +2011,18 @@ do_put( } do { +#ifdef FEAT_FLOAT + double multlen = (double)count * (double)yanklen; + + totlen = count * yanklen; + if ((double)totlen != multlen) +#else long multlen = count * yanklen; + // this only works when sizeof(int) != sizeof(long) totlen = multlen; - if (count != 0 && yanklen != 0 - && (totlen != multlen || totlen / count != yanklen - || totlen / yanklen != count)) + if (totlen != multlen) +#endif { emsg(_(e_resulting_text_too_long)); break;