diff options
Diffstat (limited to 'cpp/src/Slice/Preprocessor.cpp')
-rw-r--r-- | cpp/src/Slice/Preprocessor.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp index 8c7f1983413..1d331f24387 100644 --- a/cpp/src/Slice/Preprocessor.cpp +++ b/cpp/src/Slice/Preprocessor.cpp @@ -29,6 +29,19 @@ using namespace std; using namespace Slice; // +// Callback for Crtl-C signal handling +// +static Preprocessor* _preprocess = 0; + +static void closeCallback() +{ + if(_preprocess != 0) + { + _preprocess->close(); + } +} + +// // mcpp defines // namespace Slice @@ -51,6 +64,8 @@ Slice::Preprocessor::Preprocessor(const string& path, const string& fileName, co _args(args), _cppHandle(0) { + _preprocess = this; + SignalHandler::setCloseCallback(closeCallback); } Slice::Preprocessor::~Preprocessor() @@ -437,6 +452,9 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin bool Slice::Preprocessor::close() { + _preprocess = 0; + SignalHandler::setCloseCallback(0); + if(_cppHandle != 0) { int status = fclose(_cppHandle); |