safe memcpy

반응형

사용법
uiSize = sizeof( D3DXVECTOR2 );
SafeMemcpy(dstbuffer, srcbuffer,  uiSize,  start(여기선 dstbuffer),  마지막위치(여기선 dstbuffer + (uSize+1)));
이런식으로 사용하면 된다.
그냥 간단히 src와 dst, 그리고 복사할만큼의 크기로 memcpy할때 안전한지 체크한다.
그다지 쓸일이 많지 않기도 하지만 중요한 부분을 처리할때는 이렇게 사용해도 괜춘은듯.
그냥 api보고 베껴서 만들었다.흐헤헤.

BOOL SafeMemcpy(void *dst, void *src, size_t n, void *start, void *end)
{
 if(n < 1)
 {
#ifdef _DEBUG
MGASSERT(!"Font memcpy fail");
#endif

  return FALSE;
 }

 if(!inBounds((u_int8_t*)start,(u_int8_t*)end, (u_int8_t*)dst) || !inBounds((u_int8_t*)start,(u_int8_t*)end,((u_int8_t*)dst)+n))
 {
#ifdef _DEBUG
MGASSERT(!"Font memcpy fail");
#endif
  return FALSE;
 }

 memcpy(dst, src, n);
 return TRUE;

}

int  inBounds(u_int8_t *start, u_int8_t *end, u_int8_t *p)
{
 if(p >= start && p < end)
 {
  return 1;
 }

 return 0;

}

TAGS.

Comments