Revision: 168893 Build command: build-webkit --efl --cmakeargs="-DSHARED_CORE=ON" --cmakeargs="-DENABLE_WEBKIT=OFF" --update-efl Error Text: [ 14%] Building CXX object Source/WebCore/CMakeFiles/WebCore.dir/fileapi/Blob.cpp.o /home/tanay.c/webkit/Source/WebCore/fileapi/Blob.cpp: In member function ‘long long unsigned int WebCore::Blob::size() const’: /home/tanay.c/webkit/Source/WebCore/fileapi/Blob.cpp:127:69: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] cc1plus: all warnings being treated as errors make[2]: *** [Source/WebCore/CMakeFiles/WebCore.dir/fileapi/Blob.cpp.o] Error 1 make[1]: *** [Source/WebCore/CMakeFiles/WebCore.dir/all] Error 2 make: *** [all] Error 2 Dependencies: Related to changes as part of http://trac.webkit.org/changeset/168435
Created attachment 231500 [details] Patch
Comment on attachment 231500 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=231500&action=review > Source/WebCore/fileapi/Blob.cpp:127 > + m_size = (actualSize <= std::numeric_limits<unsigned long long>::max()) ? static_cast<long long>(actualSize) : 0; The proposed code is incorrect - an unsigned long long value is always less than or equal to std::numeric_limits<unsigned long long>::max(), so comparing these makes is meaningless. The purpose of this check is to ensure that casting to a signed long long won't change the value. I think that you need something like: m_size = (actualSize <= static_cast<unsigned long long>(std::numeric_limits<long long>::max())) ? static_cast<long long>(actualSize) : 0; Or there may be some other idiom that I'm not aware of. Possibly something in CheckedArithmetic.h?
*** This bug has been marked as a duplicate of bug 132678 ***