[sisyphus] malloc behaviour
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Пн Ноя 27 01:44:30 MSK 2006
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 <root на home> /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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20061127/c7c27474/attachment-0003.bin>
Подробная информация о списке рассылки Sisyphus