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;
}
int main()
{
}
ICAgIGNsYXNzIEVudgogICAgeyAvKiB3aGF0ZXZlciAqLwogICAgfTsKICAgIAogICAgY2xhc3MgQ0VudnsKICAgIHByaXZhdGU6IAogICAgICAgIEVudiBtOwogICAgCiAgICBwdWJsaWM6CiAgICAgICAgc3RhdGljIEVudiAqSW5zdGFuY2UoKQogICAgICAgIHsKICAgICAgICAgICAgQ0VudiAqcEVudiA9IG5ldyBDRW52OyAvKiBtZW1vcnkgbGVhayAqLwogICAgICAgICAgICByZXR1cm4gJnBFbnYtPm07CiAgICAgICAgfQogICAgfTsKICAgIC8qCiAgICBFbnYgKnRlc3QoKQogICAgewogICAgICAgIENFbnYgKnAgPSBuZXcgQ0VudjsKICAgICAgICByZXR1cm4gJnAtPm07CiAgICB9CiAgICAqLwogICAgY2xhc3MgQ0VudjJ7CiAgICBwcml2YXRlOiAKICAgICAgICBFbnYgbTsKICAgICAgICBmcmllbmQgRW52ICo6OnRlc3QyKCk7CiAgICB9OwoKICAgIEVudiAqdGVzdDIoKQogICAgewogICAgICAgIENFbnYyICpwID0gbmV3IENFbnYyOwogICAgICAgIHJldHVybiAmcC0+bTsKICAgIH0KCmludCBtYWluKCkKewp9