ObjFW  Check-in [a37a78d51b]

Overview
Comment:runtime/linklib: Do not pass exit() to Amiga lib

The only reason the runtime should ever terminate the process is because
a fatal error occurred, and for that it should use abort().

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: a37a78d51b0411551264cf9cfe5f60fb0039c90ae95da74fdf8b9b1705950ae0
User & Date: js on 2018-06-03 23:08:34
Other Links: manifest | tags
Context
2018-06-03
23:31
Add -[OFObject allocZeroedMemoryWithSize:(count:)] check-in: aacb5897a0 user: js tags: trunk
23:08
runtime/linklib: Do not pass exit() to Amiga lib check-in: a37a78d51b user: js tags: trunk
20:58
ofzip: LHA: Only try to set a mode if we have one check-in: 54c76965d7 user: js tags: trunk
Changes

Modified src/runtime/amiga-library.m from [cbe13c4c89] to [a831aab769].

462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
462
463
464
465
466
467
468








469
470
471
472
473
474
475







-
-
-
-
-
-
-
-








int
fflush(FILE *restrict stream)
{
	return libc.fflush(stream);
}

void
exit(int status)
{
	libc.exit(status);

	OF_UNREACHABLE
}

void
abort(void)
{
	libc.abort();

	OF_UNREACHABLE
}

Modified src/runtime/linklib/linklib.m from [715e972f4a] to [b705064e93].

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
67
68
69
70
71
72
73

74
75
76
77
78
79
80







-







	struct objc_libc libc = {
		.malloc = malloc,
		.calloc = calloc,
		.realloc = realloc,
		.free = free,
		.vfprintf = vfprintf,
		.fflush = fflush,
		.exit = exit,
		.abort = abort,
#ifdef HAVE_SJLJ_EXCEPTIONS
		._Unwind_SjLj_RaiseException = _Unwind_SjLj_RaiseException,
#else
		._Unwind_RaiseException = _Unwind_RaiseException,
#endif
		._Unwind_DeleteException = _Unwind_DeleteException,

Modified src/runtime/private.h from [417682c35b] to [9809c03572].

139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
139
140
141
142
143
144
145

146
147
148
149
150
151
152







-







struct objc_libc {
	void *_Nullable (*_Nonnull malloc)(size_t);
	void *_Nullable (*_Nonnull calloc)(size_t, size_t);
	void *_Nullable (*_Nonnull realloc)(void *_Nullable, size_t);
	void (*_Nonnull free)(void *_Nullable);
	int (*_Nonnull vfprintf)(FILE *_Nonnull, const char *_Nonnull, va_list);
	int (*_Nonnull fflush)(FILE *_Nonnull);
	void (*_Nonnull exit)(int);
	void (*_Nonnull abort)(void);
# ifdef HAVE_SJLJ_EXCEPTIONS
	int (*_Nonnull _Unwind_SjLj_RaiseException)(void *_Nonnull);
# else
	int (*_Nonnull _Unwind_RaiseException)(void *_Nonnull);
# endif
	void (*_Nonnull _Unwind_DeleteException)(void *_Nonnull);