Я поддерживаю некоторый код c на Solaris, и я видел что-то странное, по крайней мере, я думаю, что это:
char new_login[64];
...
strcpy(new_login, (char *)login);
...
free(new_login);
Насколько я понимаю, поскольку переменная является локальным массивом, память поступает из стека и не нуждается в освобождении, и, кроме того, поскольку не используется malloc / calloc / realloc, поведение не определено.
Это система реального времени, поэтому я думаю, что это пустая трата циклов. Я что-то упускаю из виду?