LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

malloc() в Си при невозможности выделить память тихо возвращает NULL. Так называемый системный язык Rust кладёт библиотеку в панику и, соответственно, жёстко прерывает работу вызывающей программы. Для curl - это no go. И хорошо.

Ты 5 звёзд заработал и настолько плох?

void* safe_malloc(size_t size)
{
    void* res = malloc(size);
    if (res == NULL) abort();
    return res;
}

Например в glib используется такой безопасный malloc, g_malloc, и он упадёт, а не вернёт NULL…

gpointer
g_malloc (gsize n_bytes)
{
    gpointer mem;
    mem = malloc (n_bytes);

    if (mem)
        return mem;

    g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
        G_STRLOC, n_bytes);
}

Исходная версия fsb4000, :

malloc() в Си при невозможности выделить память тихо возвращает NULL. Так называемый системный язык Rust кладёт библиотеку в панику и, соответственно, жёстко прерывает работу вызывающей программы. Для curl - это no go. И хорошо.

Ты 5 звёзд заработал и настолько плох?

void* safe_malloc(size_t size)
{
    void* res = malloc(size);
    if (res == NULL) abort();
    return res;
}

Например в glib используется такой безопасный malloc, g_malloc, и он упадёт, а не вернёт NULL…