summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2019-03-21 06:52:30 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-03-21 06:52:30 +0100
commit514674cb38e46b93d26f78e87244e1cfef67ccdb (patch)
treee5bd7164c3efce7f0a8d6086b5fe0188e8fe55ad /lib
parent28a926cb679100414a71bb8aefe349c5bdf69b26 (diff)
downloadNim-514674cb38e46b93d26f78e87244e1cfef67ccdb.tar.gz
use abort instead of quit (#10872)
Diffstat (limited to 'lib')
-rw-r--r--lib/system/embedded.nim3
-rw-r--r--lib/system/excpt.nim11
2 files changed, 9 insertions, 5 deletions
diff --git a/lib/system/embedded.nim b/lib/system/embedded.nim
index fb89e7f0f..d1e05dad5 100644
--- a/lib/system/embedded.nim
+++ b/lib/system/embedded.nim
@@ -29,8 +29,7 @@ const
   nativeStackTraceSupported = false
   hasSomeStackTrace = false
 
-proc quitOrDebug() {.inline.} =
-  quit(1)
+proc quitOrDebug() {.noreturn, importc: "abort", header: "<stdlib.h>", nodecl.}
 
 proc raiseException(e: ref Exception, ename: cstring) {.compilerRtl.} =
   sysFatal(ReraiseError, "exception handling is not available")
diff --git a/lib/system/excpt.nim b/lib/system/excpt.nim
index 8849caee5..75a0e8967 100644
--- a/lib/system/excpt.nim
+++ b/lib/system/excpt.nim
@@ -38,10 +38,15 @@ proc showErrorMessage(data: cstring) {.gcsafe.} =
       writeToStdErr(data)
 
 proc quitOrDebug() {.inline.} =
-  when not defined(endb):
-    quit(1)
-  else:
+  when defined(endb):
     endbStep() # call the debugger
+  elif not defined(nodejs) and not defined(nimscript):
+    when nimvm:
+      quit(1)
+    else:
+      c_abort()
+  else:
+    quit(1)
 
 proc chckIndx(i, a, b: int): int {.inline, compilerproc, benign.}
 proc chckRange(i, a, b: int): int {.inline, compilerproc, benign.}
ption */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*
 * $LynxId: LYCharUtils.h,v 1.27 2011/06/11 10:35:56 tom Exp $
 */
#ifndef LYCHARUTILS_H
#define LYCHARUTILS_H

#ifndef HTUTILS_H
#include <HTUtils.h>
#endif /* HTUTILS_H */

#ifndef HTSTREAM_H
#include <HTStream.h>
#endif /* HTSTREAM_H */

#ifdef __cplusplus
extern "C" {
#endif
#define CHECK_ID(code) LYCheckForID(me, present, value, (int)code)
    typedef enum {
	st_HTML = 0,		/* attributes and content found in HTML, probably meant for display */
	st_URL,			/* URLs, fragments, NAME and ID */
	st_other
    } CharUtil_st;

    extern char **LYUCFullyTranslateString(char **str,
					   int cs_from,
					   int cs_to,
					   int do_ent,
					   int use_lynx_specials,
					   int plain_space,
					   int hidden,
					   int Back,
					   CharUtil_st stype);
    extern BOOL LYUCTranslateHTMLString(char **str,
					int cs_from,
					int cs_to,
					int use_lynx_specials,
					int plain_space,
					int hidden,
					CharUtil_st stype);
    extern BOOL LYUCTranslateBackFormData(char **str,
					  int cs_from,
					  int cs_to,
					  int plain_space);
    extern void LYEntify(char **str,
			 int isTITLE);
    extern const char *LYEntifyTitle(char **target, const char *source);
    extern const char *LYEntifyValue(char **target, const char *source);
    extern void LYTrimHead(char *str);
    extern void LYTrimTail(char *str);
    extern char *LYFindEndOfComment(char *str);
    extern void LYFillLocalFileURL(char **href,
				   const char *base);
    extern void LYAddMETAcharsetToFD(FILE *fd,
				     int disp_chndl);
    extern void LYAddMETAcharsetToStream(HTStream *target,
					 int disp_chndl);
    extern void LYformTitle(char **dst,
			    const char *src);
    extern char *LYParseTagParam(char *from,
				 const char *name);
    extern void LYParseRefreshURL(char *content,
				  char **p_seconds,
				  char **p_address);

#ifdef Lynx_HTML_Handler
    extern int OL_CONTINUE;	/* flag for whether CONTINUE is set */
    extern int OL_VOID;		/* flag for whether a count is set */
    extern void LYZero_OL_Counter(HTStructured * me);
    extern char *LYUppercaseA_OL_String(int seqnum);
    extern char *LYLowercaseA_OL_String(int seqnum);
    extern char *LYUppercaseI_OL_String(int seqnum);
    extern char *LYLowercaseI_OL_String(int seqnum);
    extern void LYGetChartransInfo(HTStructured * me);
    extern void LYHandleMETA(HTStructured * me, const BOOL *present,
			     const char **value,
			     char **include);
    extern void LYHandlePlike(HTStructured * me, const BOOL *present,
			      const char **value,
			      char **include,
			      int align_idx,
			      int start);
    extern void LYHandleSELECT(HTStructured * me, const BOOL *present,
			       const char **value,
			       char **include,
			       int start);
    extern int LYLegitimizeHREF(HTStructured * me, char **href,
				int force_slash,
				int strip_dots);
    extern void LYCheckForContentBase(HTStructured * me);
    extern void LYCheckForID(HTStructured * me, const BOOL *present,
			     const char **value,
			     int attribute);
    extern void LYHandleID(HTStructured * me, const char *id);
    extern BOOLEAN LYoverride_default_alignment(HTStructured * me);
    extern void LYEnsureDoubleSpace(HTStructured * me);
    extern void LYEnsureSingleSpace(HTStructured * me);
    extern void LYResetParagraphAlignment(HTStructured * me);
    extern BOOLEAN LYCheckForCSI(HTParentAnchor *anchor,
				 char **url);

#endif				/* Lynx_HTML_Handler */

#define LYUCTranslateBackHeaderText LYUCTranslateBackFormData

#ifdef __cplusplus
}
#endif
#endif				/* LYCHARUTILS_H */