if(newp) return chunk2mem(newp);
if(newp) return BOUNDED_N(chunk2mem(newp), bytes);
Void_t* rEALLOc(Void_t* oldmem, size_t bytes)#elseVoid_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;#endif{  arena *ar_ptr;  INTERNAL_SIZE_T    nb;      /* padded request size */  mchunkptr oldp;             /* chunk corresponding to oldmem */  INTERNAL_SIZE_T    oldsize; /* its size */  mchunkptr newp;             /* chunk to return */#if defined _LIBC || defined MALLOC_HOOKS  if (__realloc_hook != NULL) {    Void_t* result;#if defined __GNUC__ && __GNUC__ >= 2    result = (*__realloc_hook)(oldmem, bytes, RETURN_ADDRESS (0));#else    result = (*__realloc_hook)(oldmem, bytes, NULL);#endif    return result;  }#endif#ifdef REALLOC_ZERO_BYTES_FREES  if (bytes == 0 && oldmem != NULL) { fREe(oldmem); return 0; }#endif  /* realloc of null is supposed to be same as malloc */  if (oldmem == 0) return mALLOc(bytes);  oldp    = mem2chunk(oldmem);  oldsize = chunksize(oldp);  if(request2size(bytes, nb))    return 0;#if HAVE_MMAP  if (chunk_is_mmapped(oldp))  {    Void_t* newmem;#if HAVE_MREMAP    newp = mremap_chunk(oldp, nb);    if(newp) return chunk2mem(newp);#endif    /* Note the extra SIZE_SZ overhead. */    if(oldsize - SIZE_SZ >= nb) return oldmem; /* do nothing */    /* Must alloc, copy, free. */    newmem = mALLOc(bytes);    if (newmem == 0) return 0; /* propagate failure */    MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ);    munmap_chunk(oldp);    return newmem;  }#endif  ar_ptr = arena_for_ptr(oldp);#if THREAD_STATS  if(!mutex_trylock(&ar_ptr->mutex))    ++(ar_ptr->stat_lock_direct);  else {    (void)mutex_lock(&ar_ptr->mutex);    ++(ar_ptr->stat_lock_wait);  }#else  (void)mutex_lock(&ar_ptr->mutex);#endif#ifndef NO_THREADS  /* As in malloc(), remember this arena for the next allocation. */  tsd_setspecific(arena_key, (Void_t *)ar_ptr);#endif  newp = chunk_realloc(ar_ptr, oldp, oldsize, nb);  (void)mutex_unlock(&ar_ptr->mutex);  return newp ? chunk2mem(newp) : NULL;}