mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
Fixes #1168
This commit is contained in:
@@ -57,6 +57,7 @@ when not defined(SIGINT):
|
||||
SIGINT = cint(2)
|
||||
SIGSEGV = cint(11)
|
||||
SIGTERM = cint(15)
|
||||
SIGPIPE = cint(13)
|
||||
else:
|
||||
{.error: "SIGABRT not ported to your platform".}
|
||||
else:
|
||||
@@ -66,6 +67,8 @@ when not defined(SIGINT):
|
||||
SIGABRT {.importc: "SIGABRT", nodecl.}: cint
|
||||
SIGFPE {.importc: "SIGFPE", nodecl.}: cint
|
||||
SIGILL {.importc: "SIGILL", nodecl.}: cint
|
||||
when defined(macosx) or defined(linux):
|
||||
var SIGPIPE {.importc: "SIGPIPE", nodecl.}: cint
|
||||
|
||||
when defined(macosx):
|
||||
when NoFakeVars:
|
||||
|
||||
@@ -298,7 +298,13 @@ when not defined(noSignalHandler):
|
||||
elif s == SIGILL: action("SIGILL: Illegal operation.\n")
|
||||
elif s == SIGBUS:
|
||||
action("SIGBUS: Illegal storage access. (Attempt to read from nil?)\n")
|
||||
else: action("unknown signal\n")
|
||||
else:
|
||||
block platformSpecificSignal:
|
||||
when defined(SIGPIPE):
|
||||
if s == SIGPIPE:
|
||||
action("SIGPIPE: Pipe closed.\n")
|
||||
break platformSpecificSignal
|
||||
action("unknown signal\n")
|
||||
|
||||
# print stack trace and quit
|
||||
when hasSomeStackTrace:
|
||||
@@ -323,6 +329,8 @@ when not defined(noSignalHandler):
|
||||
c_signal(SIGFPE, signalHandler)
|
||||
c_signal(SIGILL, signalHandler)
|
||||
c_signal(SIGBUS, signalHandler)
|
||||
when defined(SIGPIPE):
|
||||
c_signal(SIGPIPE, signalHandler)
|
||||
|
||||
registerSignalHandler() # call it in initialization section
|
||||
|
||||
|
||||
Reference in New Issue
Block a user