C++/CLI 컴파일러의 == 연산자 버그?

  • Post Author:
  • Post Category:
  • Post Comments:0 Comments
  • Post last modified:October 14, 2008
property CInventoryBagManaged^ BagInventory
{
	CInventoryBagManaged^ get()
	{
		if(m_BagInventory == nullptr)
		{
			CInventoryBag* inventory =  m_NativeObject->GetBagInventory();
			if(inventory == NULL)
				return nullptr;

			m_BagInventory = gcnew CInventoryBagManaged(inventory);
		}
		return m_BagInventory;
	}
}

해당 클래스의 전체 소스코드를 공개할 수야 없는 노릇이니 문제가 된 프로퍼티만 적었다. 해당 클래스엔 이와 유사한 프로퍼티가 여러 개 있는데 유독 이 프로퍼티에서만 문제가 발생했다. 뭔 문제인가 하니, if(m_BagInventory == nullptr)에서 널 참조 예외가 계속 튀어나왔다. 어라? m_BagInventory가 널인지 확인하라니까 널 참조를 내보내? 미친 건가?

디버거 창에서 m_BagInventory==nullptr이냐고 물으니까 true란다. 도대체 어쩌라고?

결국 컴파일러 버그인가 싶어 코드를 if(nullptr == m_BagInventory)라고 고쳐봤다. 그러니까 더 이상 널 참조 예외가 안 난다. 참 난감한 일이다. 이런 구조를 가진 프로퍼티가 여러 개 있는데 유독 이번만 문제가 발생했다. 일단 문제의 재발 방지 차원에서 앞으론 if(nullptr == m_BagInventory) 식으로 코드를 짜야겠다.

Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • 아이 낳은 걸 후회한다는 유부남, 유부녀들의 고백을 들었을 때가 떠오르네. 열심히 준비하고 노력하니 난 안 그렇던데? 물론 내가 운이 좋았을 지도. 그런데 애 태어나기 전에 육아 서적을 열 권 넘게 읽은 사람이 몇이나 되나?
    13 hours ago
  • 큰 결정을 하는데 준비는 소홀하고, 그래서 문제를 겪는다. 그런데 그 문제가 어째서 일반적이라는 걸까? 전혀 아닌 걸
    14 hours ago
  • I donated to @mozilla today because I #lovetheweb. Join me and help fight for a better and healthier internet, for… https://t.co/joKhxqAXZj
    1 day ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts