swpsize += BUFINC;
if (!(newswp = (char *)realloc(buffer, swpsize*sizeof(char)))) errorz(" Memory allocation error...Sorry!\n");
memcpy(newswp, buffer, swpsize-BUFINC);
free(buffer);
Существуют такие сочетания размеров буфера и приращений BUFINC, при которых
срабатывает assert на операторе free (возвращается ругать типа "modified (page-) pointer". IMHO это происходит потому,что рано или поздно размер буфера будет иметь величину, кратную размеру страницы (у меня это слетело уже при swpsize = 4100). А в коде malloc.c (функция ifree) есть вот какое место :
#define malloc_pagemask ((malloc_pagesize)-1)
#ifndef malloc_pageshift
#define malloc_pageshift 12U
#endif
#if !defined(malloc_pagesize)
#define malloc_pagesize (1UL<<malloc_pageshift)
#endif
if (*mp == MALLOC_FIRST) { /* Page allocation */
/* Check the pointer */
if ((u_long)ptr & malloc_pagemask) {
wrtwarning("modified (page-) pointer\n");
return 0;
}