Commit a1ee890d by Martin v. Loewis Committed by Robert Lipe

singleton.C: Return error value instead of taking SIGSEGV.

	*  g++.other/singleton.C: Return error value instead of taking
	SIGSEGV.

From-SVN: r21054
parent 4dfb04c6
Fri Jul 10 23:43:33 1998 Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>
* g++.other/singleton.C: Return error value instead of taking
SIGSEGV.
Fri Jul 10 10:02:03 1998 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
* g++.other/singleton.C: New test. Warning is under dispute.
......
// execution test - re-initialization of statics XFAIL *-*-*
// This tests two things:
// 1. there is an annoying warning. singleton.C:27: warning: `class
// singleton' only defines private constructors and has no friends egcs
// fails to see that there is a public static accessor function.
// 1. there is an annoying warning.
// singleton.C:26: warning: `class singleton' only defines private constructors
and has no friends
// egcs fails to see that there is a public static accessor function.
// 2. the program crashes, because apparently the static variable s in
// singleton::instance() is considered constructed although the ctor
// exited via an exception.
// exited via an exception. (crash changed to non-zero return here)
class singleton {
public:
......@@ -12,19 +14,18 @@ public:
static singleton s;
return s;
}
~singleton() { delete sigsegv; }
int crash() { return *sigsegv; }
int check() {return initialized;}
private:
singleton() : sigsegv(0) {
singleton() : initialized(1) {
if ( counter++ == 0 ) throw "just for the heck of it";
sigsegv = new int(0);
initialized = 2;
}
singleton( const singleton& rhs );
void operator=( const singleton& rhs );
int* sigsegv;
int initialized;
static int counter;
};
}; // gets bogus error - class is not useless XFAIL *-*-*
int singleton::counter;
......@@ -32,7 +33,8 @@ int main()
{
while (1) {
try {
return singleton::instance().crash();
return singleton::instance().ok()-2;
} catch (...) { }
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment