On 10/07/2012, at 3:17 PM, Alan M. Carroll <a...@thought-mesh.net> wrote:
> I did a bit of netsearching and I think I see the problem, although I don't > have a good solution. It is a result of optimization in the call sequence in > test_append that calls str.append(value,len) which calls reserve(length() + > count). length() is inlined to a reference to n so the argument is treated as > "n+count". This yields, in the reserve method at the bad line > > if (n+count <= n) Yep, I thing you are right. It's a pretty atrocious error message :( > > which leads to the warning/error you see. I don't see how to disable the > error, though. Teaching Vec.h to use unsigned types makes the overflow defined, but I was hoping to be able to repro this before I went down that path ... > > > Tuesday, July 10, 2012, 2:48:07 PM, you wrote: > >> On 10/07/2012, at 11:16 AM, James Peach <jpe...@apache.org> wrote: > >>> Hi all, > >>> So it seems that I have still broken the Fedora buildbot, >>> http://ci.apache.org/builders/tserver-fedora-trunk/builds/1168: > >>> CXX test_Vec.o > >>> cc1plus: warnings being treated as errors >>> Vec.h: In function ‘int main(int, char**)’: >>> Vec.h:616: error: assuming signed overflow does not occur when assuming >>> that (X + c) < X is always false >>> Vec.h:616: error: assuming signed overflow does not occur when assuming >>> that (X + c) < X is always false > >>> The error is apparantly here, which is a bit confusing: > >>> 614 template <class C, class A, int S> inline void >>> 615 Vec<C,A,S>::reserve(int x) { >>> 616 if (x <= n) >>> 617 return; > >>> I tested that master builds fine on Fedora17 w/ gcc 4.7.0-5 and "make >>> check" passes. Does anyone know what version of Fedora this buildbot is >>> running? > >> And everything's cool with Fedora 13 using gcc 4.4.5-2. Any clues gratefully >> accepted ... > >> J >