1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2021-11-02 23:11:00 +00:00
parent 8a1962d135
commit e551ccfb93
2 changed files with 11 additions and 3 deletions

View File

@@ -2011,12 +2011,18 @@ do_put(
} }
do { do {
#ifdef FEAT_FLOAT
double multlen = (double)count * (double)yanklen;
totlen = count * yanklen;
if ((double)totlen != multlen)
#else
long multlen = count * yanklen; long multlen = count * yanklen;
// this only works when sizeof(int) != sizeof(long)
totlen = multlen; totlen = multlen;
if (count != 0 && yanklen != 0 if (totlen != multlen)
&& (totlen != multlen || totlen / count != yanklen #endif
|| totlen / yanklen != count))
{ {
emsg(_(e_resulting_text_too_long)); emsg(_(e_resulting_text_too_long));
break; break;

View File

@@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
3575,
/**/ /**/
3574, 3574,
/**/ /**/