attempt to fix #4640
This commit is contained in:
parent
99d9526002
commit
03768e7da0
3 changed files with 9 additions and 6 deletions
|
|
@ -2923,14 +2923,14 @@ when not defined(JS): #and not defined(nimscript):
|
||||||
## allows you to override the behaviour of your application when CTRL+C
|
## allows you to override the behaviour of your application when CTRL+C
|
||||||
## is pressed. Only one such hook is supported.
|
## is pressed. Only one such hook is supported.
|
||||||
|
|
||||||
proc writeStackTrace*() {.tags: [WriteIOEffect].}
|
proc writeStackTrace*() {.tags: [WriteIOEffect], gcsafe.}
|
||||||
## writes the current stack trace to ``stderr``. This is only works
|
## writes the current stack trace to ``stderr``. This is only works
|
||||||
## for debug builds.
|
## for debug builds.
|
||||||
when hostOS != "standalone":
|
when hostOS != "standalone":
|
||||||
proc getStackTrace*(): string
|
proc getStackTrace*(): string {.gcsafe.}
|
||||||
## gets the current stack trace. This only works for debug builds.
|
## gets the current stack trace. This only works for debug builds.
|
||||||
|
|
||||||
proc getStackTrace*(e: ref Exception): string
|
proc getStackTrace*(e: ref Exception): string {.gcsafe.}
|
||||||
## gets the stack trace associated with `e`, which is the stack that
|
## gets the stack trace associated with `e`, which is the stack that
|
||||||
## lead to the ``raise`` statement. This only works for debug builds.
|
## lead to the ``raise`` statement. This only works for debug builds.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
# use the heap (and nor exceptions) do not include the GC or memory allocator.
|
# use the heap (and nor exceptions) do not include the GC or memory allocator.
|
||||||
|
|
||||||
var
|
var
|
||||||
errorMessageWriter*: (proc(msg: string) {.tags: [WriteIOEffect], benign.})
|
errorMessageWriter*: (proc(msg: string) {.tags: [WriteIOEffect], benign,
|
||||||
|
nimcall.})
|
||||||
## Function that will be called
|
## Function that will be called
|
||||||
## instead of stdmsg.write when printing stacktrace.
|
## instead of stdmsg.write when printing stacktrace.
|
||||||
## Unstable API.
|
## Unstable API.
|
||||||
|
|
@ -26,7 +27,7 @@ else:
|
||||||
proc writeToStdErr(msg: cstring) =
|
proc writeToStdErr(msg: cstring) =
|
||||||
discard MessageBoxA(0, msg, nil, 0)
|
discard MessageBoxA(0, msg, nil, 0)
|
||||||
|
|
||||||
proc showErrorMessage(data: cstring) =
|
proc showErrorMessage(data: cstring) {.gcsafe.} =
|
||||||
if errorMessageWriter != nil:
|
if errorMessageWriter != nil:
|
||||||
errorMessageWriter($data)
|
errorMessageWriter($data)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,9 @@ else:
|
||||||
when TArg is void:
|
when TArg is void:
|
||||||
thrd.dataFn()
|
thrd.dataFn()
|
||||||
else:
|
else:
|
||||||
thrd.dataFn(thrd.data)
|
var x: TArg
|
||||||
|
deepCopy(x, thrd.data)
|
||||||
|
thrd.dataFn(x)
|
||||||
|
|
||||||
proc threadProcWrapStackFrame[TArg](thrd: ptr Thread[TArg]) =
|
proc threadProcWrapStackFrame[TArg](thrd: ptr Thread[TArg]) =
|
||||||
when defined(boehmgc):
|
when defined(boehmgc):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue