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
> 

Reply via email to