]> granicus.if.org Git - vim/commitdiff
patch 8.2.3575: overflow check still fails when sizeof(int) == sizeof(long) v8.2.3575
authorBram Moolenaar <Bram@vim.org>
Tue, 2 Nov 2021 23:11:00 +0000 (23:11 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 2 Nov 2021 23:11:00 +0000 (23:11 +0000)
Problem:    Overflow check still fails when sizeof(int) == sizeof(long).
Solution:   Use a float to check the result.

src/register.c
src/version.c

index 4160c03107faeef363c9075d8e0eb888f201190f..0afa363ecafe5237c5d3f338c9868e6e93aaaa70 100644 (file)
@@ -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;
index 98f666e6e405a85c1c9e9afcc5372eab89ec93a9..27331c95dc2cf35e063ba19323384c0378d42013 100644 (file)
@@ -757,6 +757,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3575,
 /**/
     3574,
 /**/