| |
| /* Point of this test is to generate some very long 'stabs' debug |
| strings, via the use of these exponentially large template types. |
| When compiled with -gstabs, this causes 3.1.1 to segfault at |
| startup. |
| */ |
| |
| #include <stdio.h> |
| |
| template <class T, class U> |
| class Stack |
| { |
| public: |
| Stack(int = 10) { size=5; top=6; stackPtr=(T*)6; }; |
| ~Stack() { } |
| int push(const T&, const U&); |
| int popT(T&); |
| int popU(U&); |
| int isEmpty() const { return top == -1; } |
| int isFull() const { return top == size - 1; } |
| private: |
| int size; |
| int top; |
| T* stackPtr; |
| } ; |
| |
| typedef Stack<int,char> Foo; |
| typedef Stack<Foo,Foo> Foo2; |
| typedef Stack<Foo2,Foo2> Foo3; |
| typedef Stack<Foo3,Foo3> Foo4; |
| typedef Stack<Foo4,Foo4> Foo5; |
| typedef Stack<Foo5,Foo5> Foo6; |
| typedef Stack<Foo6,Foo6> Foo7; |
| typedef Stack<Foo7,Foo7> Foo8; |
| typedef Stack<Foo8,Foo8> Foo9; |
| typedef Stack<Foo9,Foo9> Foo10; |
| typedef Stack<Foo10,Foo10> Foo11; |
| typedef Stack<Foo11,Foo11> Foo12; |
| |
| int main ( int argc, char** argv ) |
| { |
| Stack<Foo12,Foo12> * x = new Stack<Foo12,Foo12>(3); |
| if (x == NULL) |
| printf("It's NULL (?!)\n"); |
| else |
| printf("It's not NULL. How DULL.\n"); |
| delete x; |
| return 0; |
| } |