std/segfaults (original) (raw)

Source Edit

This modules registers a signal handler that turns access violations / segfaults into a NilAccessDefect exception. To be able to catch a NilAccessDefect all you have to do is to import this module.

Tested on these OSes: Linux, Windows, OSX

Procs

proc c_abort() {.importc: "abort", header: "<stdlib.h>", noSideEffect, noreturn, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_calloc(nmemb, size: csize_t): pointer {.importc: "calloc", header: "<stdlib.h>", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_fflush(f: CFilePtr): cint {.importc: "fflush", header: "<stdio.h>", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_fprintf(f: CFilePtr; frmt: cstring): cint {.importc: "fprintf", header: "<stdio.h>", varargs, discardable, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_fputc(c: char; f: CFilePtr): cint {.importc: "fputc", header: "<stdio.h>", discardable, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_free(p: pointer) {.importc: "free", header: "<stdlib.h>", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_longjmp(jmpb: C_JmpBuf; retval: cint) {.header: "<setjmp.h>", importc: "longjmp", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_memcmp(a, b: pointer; size: csize_t): cint {.importc: "memcmp", header: "<string.h>", noSideEffect, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_printf(frmt: cstring): cint {.importc: "printf", header: "<stdio.h>", varargs, discardable, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_raise(sign: cint): cint {.importc: "raise", header: "<signal.h>", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_setjmp(jmpb: C_JmpBuf): cint {.header: "<setjmp.h>", importc: "setjmp", ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_signal(sign: cint; handler: CSighandlerT): CSighandlerT {. importc: "signal", header: "<signal.h>", discardable, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_sprintf(buf, frmt: cstring): cint {.importc: "sprintf", header: "<stdio.h>", varargs, noSideEffect, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_strcmp(a, b: cstring): cint {.importc: "strcmp", header: "<string.h>", noSideEffect, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_strlen(a: cstring): csize_t {.importc: "strlen", header: "<string.h>", noSideEffect, ...raises: [], tags: [], forbids: [].}

Source Edit

proc c_strstr(haystack, needle: cstring): cstring {.importc: "strstr", header: "<string.h>", noSideEffect, ...raises: [], tags: [], forbids: [].}

Source Edit