diff options
author | David McFarland <davidm@hb-studios.com> | 2017-04-21T14·28-0300 |
---|---|---|
committer | David McFarland <davidm@hb-studios.com> | 2017-04-21T14·28-0300 |
commit | 804ac524891ead6aa70e27c093686b71391ea232 (patch) | |
tree | b046be4ff1c5a88d4b404bea68bf01aaf28699a9 /src | |
parent | d35231ec6017d72492a23b882b9275a60e1737a6 (diff) |
add helper function to set 'interruptThrown'
this fixes a linker failure on cygwin 64 due to some bad interaction between tls and shared libraries. see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64697
Diffstat (limited to 'src')
-rw-r--r-- | src/libmain/shared.cc | 2 | ||||
-rw-r--r-- | src/libutil/util.cc | 7 | ||||
-rw-r--r-- | src/libutil/util.hh | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 4747b9bf9b4c..d6c1c0c9cb49 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -259,7 +259,7 @@ int handleExceptions(const string & programName, std::function<void()> fun) condition is discharged before we reach printMsg() below, since otherwise it will throw an (uncaught) exception. */ - interruptThrown = true; + setInterruptThrown(); throw; } } catch (Exit & e) { diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 37dfccd0669a..88a2f752c023 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -946,7 +946,12 @@ void closeOnExec(int fd) bool _isInterrupted = false; -thread_local bool interruptThrown = false; +static thread_local bool interruptThrown = false; + +void setInterruptThrown() +{ + interruptThrown = true; +} void _interrupted() { diff --git a/src/libutil/util.hh b/src/libutil/util.hh index 121423cdaa3d..ae40dcd4cd2d 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -267,7 +267,7 @@ void closeOnExec(int fd); extern bool _isInterrupted; -extern thread_local bool interruptThrown; +void setInterruptThrown(); void _interrupted(); |