[llvm-commits] [llvm] r61576 - /llvm/trunk/unittests/ADT/ImmutableSetTest.cpp
Bill Wendling
isanbard at gmail.com
Fri Jan 2 15:12:40 PST 2009
On Jan 2, 2009, at 3:11 PM, Bill Wendling wrote:
> On Jan 2, 2009, at 6:37 AM, Misha Brukman wrote:
>
>> +static char *ptr; // tmp var
>> +struct MyIter {
>> + int counter;
>> + MyIter() : counter(0) {}
>> + void operator()(char c) {
>> + *ptr++ = c;
>> + ++counter;
>> + }
>> +};
>>
>> Global state is frowned upon -- if you don't properly clear it
>> between tests, strange bugs will occur, and they will depend on the
>> order of the test execution (which aren't guaranteed to execute in
>> any particular order). This will lead to strange Heisenbugs.
>>
>> Instead, you can make another Fixture class, and make this state a
>> part of that class. If you set up that state, you'll know you're
>> always getting a clean beginning state, and you'll have nothing to
>> worry about.
>>
> Also, the "*ptr++" is writing over memory that's not allocated. I'm
> going to get rid of the "++" in there. I think that that's causing
> some test failures. But the general "global state" needs to be
> addressed.
>
Never mind that comment. I see that "ptr" is being assigned to a real
buffer.
-bw
More information about the llvm-commits
mailing list