[Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Dec 2017 03:03:19 +0000 (03:03 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Dec 2017 03:03:19 +0000 (03:03 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180490

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-07
Reviewed by Alex Christensen.

bitsInPointer() returns unsigned which is smaller than size_t.
"~"(negate) operator is applied before extending its size which result filled with zero.
This may be potentially a bug if numBits is greater than max value of unsigned long
(which is not practical).

* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225668 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/BitVector.cpp

index ec9cb07..d2f05a7 100644 (file)
@@ -1,3 +1,18 @@
+2017-12-07  Basuke Suzuki  <Basuke.Suzuki@sony.com>
+
+        [Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=180490
+
+        Reviewed by Alex Christensen.
+
+        bitsInPointer() returns unsigned which is smaller than size_t.
+        "~"(negate) operator is applied before extending its size which result filled with zero.
+        This may be potentially a bug if numBits is greater than max value of unsigned long
+        (which is not practical).
+
+        * wtf/BitVector.cpp:
+        (WTF::BitVector::OutOfLineBits::create):
+
 2017-12-07  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         Use WTF Locking primitives in WebThread and drop pthread_xxx use
index 736ff7d..25f29b5 100644 (file)
@@ -74,7 +74,7 @@ void BitVector::clearAll()
 
 BitVector::OutOfLineBits* BitVector::OutOfLineBits::create(size_t numBits)
 {
-    numBits = (numBits + bitsInPointer() - 1) & ~(bitsInPointer() - 1);
+    numBits = (numBits + bitsInPointer() - 1) & ~(static_cast<size_t>(bitsInPointer()) - 1);
     size_t size = sizeof(OutOfLineBits) + sizeof(uintptr_t) * (numBits / bitsInPointer());
     OutOfLineBits* result = new (NotNull, fastMalloc(size)) OutOfLineBits(numBits);
     return result;