Was ist xmalloc? Das kenn ich nicht und auch nicht meine Manpages. Ein normales malloc kann im Falle das kein Speicher mehr vorhanden ist auch NULL zurück liefern. Den Fall zu behandeln wäre auch noch gut, und nicht voraus zu setzten, das malloc eh funktioniert.
Ich vermute, dass xmalloc malloc wrappt und eine Fehlermeldung ausgibt und dann das Programm terminiert wenn malloc 0 zurückgibt. Es ist so eine Art Konvention in C, eine solche Funktion xmalloc zu nennen.

Desweiteren wäre es eventuell günstig keine Variable "new" zu nennen, zumal das unter C++ ein Keyword ist (nenns vieleicht "new_task"). Theoretisch sollte GCC im C-Modus damit zwar umgehen können, aber sicher ist sicher. Auch ein eventueller späterer Umstieg auf C++ wäre damit dann einfacher möglich.
Dem stimme ich zu. Ich möchte auch kurz erläutern dass dieser Variablename mit Grund dafür war, dass ich gesagt habe, dass es sich weder um C noch um C++ handelt. C++ kann es wegen "new" nicht sein. Andernfalls wird aber die "struct sowieso { [...] };" Syntax benutzt, and anschließend "sowieso" ohne Spezifikation benutzt. Und das gibt es in C nicht, dafür aber in C++. Irgendeinen wichtigen Teil des Programms (neben "xmalloc") muss mason also noch unterschlagen haben.