Код, который вы уже тестировали на наличие ошибок, хотя я обычно пишу присвоение и проверяю его двумя отдельными строками:
new_list = malloc(sizeof *new_list);
if (!new_list)
/* error handling here */;
(Обратите внимание на два небольших изменения - вы не должны приводить возвращаемое значение, имы берем размер из переменной, а не ее тип, чтобы уменьшить вероятность несоответствия).
Если malloc()
не удается, возвращается нулевой указатель, который является единственным значением указателя, false.
Обработка ошибок, которую вы имеете, просто return -1;
- как вы справляетесь с этим в вызывающей функции, действительно зависит от вас.