https://gist.github.com/CriDos/67015de85bbbe76f091a
А потом ещё и realloc, malloc, op1->toReal() != op2->toReal() и тд. и тп...
В общем, я удивлён, что это всё ещё и более менее стабильно работает

------------ Дoбавленo в 01.27:
Ну и до кучи:
#cpp
char *buf = new char[strlen(src)+1];
...
delete buf;