А после получения буфера ошибки, нельзя было выделять память? Или надо было изначально угадывать размер, а потом в него писать ошибку?
буффер и запись ошибки никак не связаны,
так сложилось, что ошибка в одном участке программы привела к такому неожиданному поведению совершенно в другом участке программы