andromedarabbit / earlgrey

High performance online gaming server engine.
2 stars 1 forks source link

boost::numeric_cast 에서 RTC 검사에 걸리는 경우가 있음. #74

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
{{{
#undef max
#undef min
    TEST(EarlgreyMathTest, UIntToInt64)
    {
        bool i = UINT_MAX < _I64_MAX;
        ASSERT_TRUE(i);
        ASSERT_TRUE(std::numeric_limits<UINT>::max() <
std::numeric_limits<INT64>::max());

        UINT src = 123;
        INT64 dst = EARLGREY_NUMERIC_CAST<INT64>(src);
        ASSERT_EQ(123, dst);
    }
}}}

보면 INT64의 최대 값이 UINT의 최대 값보다 크기 때문에 UINT 
값을 INT64 변수
로 캐스팅하는 건 전혀 문제가 없다. 실제로 boost::numeric_cast 
대신
static_cast를 쓰면 RTC 검사를 통과한다. 그러나 boost::numeric_cast 
내부적으
로 무슨 처리를 하는지 이것만 썼다 하면 RTC 검사에 걸린다.

Original issue reported on code.google.com by kaistizen on 7 Apr 2010 at 4:52

GoogleCodeExporter commented 9 years ago
Earlgrey 문제가 아니고 /RTCc 옵션이 boost::numeric_cast 에서 
잠재적 오류 가능성을 짚어
내서 그렇습니다(실제 부스트 코드가 잘못된 거란 이야기는 
아닙니다). 자세한 이야기는 
http://forums.kaistizen.net/index.php/윈도우_안전한_프로그래밍 
에서 다루기로 하지요. 피
곤해서 쓰다 말고 내일 마저......

하여튼 이 티켓은 닫습니다.

Original comment by kaistizen on 8 Apr 2010 at 3:52