On Mon, Nov 27, 2006 at 04:23:07AM +0600, Slava Semushin wrote: > --- Michael Shigorin 2006-11-26 21:43:56 +0200 > +++ Slava Semushin 2006-11-27 04:17:57 +0600 > > MS> Спамит cron (точнее, sysstat): > MS> Date: Sun, 26 Nov 2006 20:20:01 +0200 (EET) > MS> From: root@home (Cron Daemon) > MS> To: root@home > MS> Subject: Cron /usr/lib/sa/sa1 1 1 > MS> realloc: Success > > Ну так это ошибка. Мне об этой ситуации Юра Каширин рассказывал: > malloc()/realloc() в случае ошибки не устанавливают errno, поэтому > если её использовать, то могут получить вот такие результаты. malloc(3) придерживается другого мнения: "The Unix98 standard requires malloc(), calloc(), and realloc() to set errno to ENOMEM upon failure. Glibc assumes that this is done (and the glibc versions of these routines do this); if you use a private malloc implementation that does not set errno, then certain library routines may fail without having a reason in errno." > Там код типа такого, наверное: > > ptr = realloc(...); > if (ptr == NULL) { > perror("realloc"); > exit(1); > } Для таких случаев давно придумали xrealloc. -- ldv