Next version of JABA
[jabaws.git] / binaries / src / muscle / setnewhandler.cpp
1 #include "muscle.h"\r
2 #include <stdio.h>\r
3 #include <new>\r
4 \r
5 const int ONE_MB = 1024*1024;\r
6 const size_t RESERVE_BYTES = 8*ONE_MB;\r
7 static void *EmergencyReserve = 0;\r
8 \r
9 void OnOutOfMemory()\r
10         {\r
11         free(EmergencyReserve);\r
12         fprintf(stderr, "\n*** OUT OF MEMORY ***\n");\r
13         fprintf(stderr, "Memory allocated so far %g MB\n", GetMemUseMB());\r
14         extern MSA *ptrBestMSA;\r
15         if (ptrBestMSA == 0)\r
16                 fprintf(stderr, "No alignment generated\n");\r
17         else\r
18                 SaveCurrentAlignment();\r
19         exit(EXIT_FatalError);\r
20         }\r
21 \r
22 void SetNewHandler()\r
23         {\r
24         EmergencyReserve = malloc(RESERVE_BYTES);\r
25         std::set_new_handler(OnOutOfMemory);\r
26         }\r