Freeing memory allocated for signal handling.
authorTim King <taking@google.com>
Fri, 13 Nov 2015 17:53:19 +0000 (09:53 -0800)
committerTim King <taking@google.com>
Tue, 24 Nov 2015 00:44:20 +0000 (16:44 -0800)
src/main/driver_unified.cpp
src/main/main.h
src/main/util.cpp

index 7bc711910a7a12b116c9849a7845e40e40fab106..c29ba55a4c5c7d413180655111be7baad28cc255 100644 (file)
@@ -609,5 +609,7 @@ int runCvc4(int argc, char* argv[], Options& opts) {
   pTotalTime = NULL;
   pExecutor = NULL;
 
+  cvc4_shutdown();
+
   return returnValue;
 }
index 01f337ef4c51ca73489784221549ba181b2184fa..a2e813c6ce0db716c79eb84f2d3b7714ff22e2b7 100644 (file)
@@ -59,6 +59,10 @@ extern CVC4_THREADLOCAL(Options*) pOptions;
 /** Initialize the driver.  Sets signal handlers for SIGINT and SIGSEGV. */
 void cvc4_init() throw(Exception);
 
+/** Shutdown the driver. Frees memory for the signal handlers. */
+void cvc4_shutdown() throw();
+
+
 }/* CVC4::main namespace */
 }/* CVC4 namespace */
 
index 3b7c6b95a93dcc74a193a90d6a5a268af7c6dac1..9278024960e9a6836483e320240e821ee9bf8649 100644 (file)
@@ -249,7 +249,7 @@ void cvc4_init() throw(Exception) {
     }
   }
   cvc4StackSize = limit.rlim_cur;
-  cvc4StackBase = &ss;
+  cvc4StackBase = ss.ss_sp;
 
   struct sigaction act1;
   act1.sa_sigaction = sigint_handler;
@@ -289,5 +289,11 @@ void cvc4_init() throw(Exception) {
   default_terminator = set_terminate(cvc4terminate);
 }
 
+void cvc4_shutdown() throw () {
+  free(cvc4StackBase);
+  cvc4StackBase = NULL;
+  cvc4StackSize = 0;
+}
+
 }/* CVC4::main namespace */
 }/* CVC4 namespace */