Advertisement
rootmese

bzero

May 9th, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.55 KB | None | 0 0
  1. void __bzero(void *dst0, size_t length)
  2. {
  3. size_t t;
  4. unsigned char *dst;
  5.  
  6. #define wsize   sizeof(unsigned int)
  7. #define wmask   (wsize - 1)
  8.  
  9.     dst = (unsigned char*)dst0;
  10.  
  11.     if(length && length < (3 * wsize))
  12.         do
  13.             *dst = 0, ++dst;
  14.         while(--length);
  15.  
  16.     if (t = (size_t)((unsigned long)dst & wmask))
  17.     {
  18.         t -= wsize;
  19.         length -= t;
  20.         do
  21.             *dst = 0, ++dst;
  22.         while (--t);
  23.     }
  24.  
  25.     t = length / wsize;
  26.     do
  27.         *(unsigned int *)(void *)dst = 0, dst += wsize;
  28.     while (--t);
  29.  
  30.     t = length & wmask;
  31.     if(t)
  32.         do
  33.             *dst = 0, ++dst;
  34.         while(--t);
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement