../src/subversion/bindings/javahl/native/CreateJ.cpp:861:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../src/subversion/bindings/javahl/native/JNIUtil.cpp:665:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
Both of these are similar: 664 1456343 brane const jsize stSize = static_cast<jsize>(newStackTra ce.size()); 665 1456343 brane if (stSize != newStackTrace.size()) 666 1456343 brane { 667 1456343 brane env->ThrowNew(env->FindClass("java.lang.ArithmeticException"), 668 1456343 brane "Overflow converting C size_t to JNI jsize"); 669 1456343 brane POP_AND_RETURN_NOTHING(); 670 1456343 brane } According to the log this is an attempt to detect overflow. Does it work? jsize is a signed integer type and newStackTrace.size is an an unsigned type. The types could be different sizes and I think the test is designed to trigger when the unsigned type is larger than the signed type and the value is truncated. However the test fails to trigger when the cast produces a negative value because the types are the same size and the unsigned value is bigger than the maximum signed value. I don't think we can use an unsigned type here so I think we need to compare with something like std::numeric_limits<jsize>::max() explicitly. -- Philip