class Env
{ /* whatever */
} ;
class CEnv{
private :
Env m;
public :
static Env * Instance( )
{
CEnv * pEnv = new CEnv; /* memory leak */
return & pEnv- > m;
}
} ;
Env * test( )
{
CEnv * p = new CEnv;
return & p- > m;
}
class CEnv2{
private :
Env m;
friend Env * :: test2 ( ) ;
} ;
Env * test2( )
{
CEnv2 * p = new CEnv2;
return & p- > m;
}
ICAgIGNsYXNzIEVudgogICAgeyAvKiB3aGF0ZXZlciAqLwogICAgfTsKICAgIAogICAgY2xhc3MgQ0VudnsKICAgIHByaXZhdGU6IAogICAgICAgIEVudiBtOwogICAgCiAgICBwdWJsaWM6CiAgICAgICAgc3RhdGljIEVudiAqSW5zdGFuY2UoKQogICAgICAgIHsKICAgICAgICAgICAgQ0VudiAqcEVudiA9IG5ldyBDRW52OyAvKiBtZW1vcnkgbGVhayAqLwogICAgICAgICAgICByZXR1cm4gJnBFbnYtPm07CiAgICAgICAgfQogICAgfTsKCiAgICBFbnYgKnRlc3QoKQogICAgewogICAgICAgIENFbnYgKnAgPSBuZXcgQ0VudjsKICAgICAgICByZXR1cm4gJnAtPm07CiAgICB9CiAgICBjbGFzcyBDRW52MnsKICAgIHByaXZhdGU6IAogICAgICAgIEVudiBtOwogICAgICAgIGZyaWVuZCBFbnYgKjo6dGVzdDIoKTsKICAgIH07CgogICAgRW52ICp0ZXN0MigpCiAgICB7CiAgICAgICAgQ0VudjIgKnAgPSBuZXcgQ0VudjI7CiAgICAgICAgcmV0dXJuICZwLT5tOwogICAgfQo=