--- /dev/null
+#include "muscle.h"\r
+#include <stdio.h>\r
+#include <new>\r
+\r
+const int ONE_MB = 1024*1024;\r
+const size_t RESERVE_BYTES = 8*ONE_MB;\r
+static void *EmergencyReserve = 0;\r
+\r
+void OnOutOfMemory()\r
+ {\r
+ free(EmergencyReserve);\r
+ fprintf(stderr, "\n*** OUT OF MEMORY ***\n");\r
+ fprintf(stderr, "Memory allocated so far %g MB\n", GetMemUseMB());\r
+ extern MSA *ptrBestMSA;\r
+ if (ptrBestMSA == 0)\r
+ fprintf(stderr, "No alignment generated\n");\r
+ else\r
+ SaveCurrentAlignment();\r
+ exit(EXIT_FatalError);\r
+ }\r
+\r
+void SetNewHandler()\r
+ {\r
+ EmergencyReserve = malloc(RESERVE_BYTES);\r
+ std::set_new_handler(OnOutOfMemory);\r
+ }\r