Use _Noreturn for lovrThrow;

Generates smaller and prettier assembly.
This commit is contained in:
bjorn 2018-12-12 19:35:18 -08:00
parent a67f59000f
commit c999f10039
2 changed files with 18 additions and 2 deletions

View File

@ -16,6 +16,7 @@ void lovrThrow(const char* format, ...) {
va_start(args, format);
lovrErrorCallback(lovrErrorUserdata, format, args);
va_end(args);
exit(EXIT_FAILURE);
} else {
va_list args;
va_start(args, format);

View File

@ -1,10 +1,25 @@
#include "lib/tinycthread/tinycthread.h"
#include <stdint.h>
#include <stddef.h>
#include <stdarg.h>
#pragma once
#ifndef _Thread_local
# ifdef _WIN32
# define _Thread_local __declspec(thread)
# else
# define _Thread_local __thread
# endif
#endif
#ifndef _Noreturn
# ifdef _WIN32
# define _Noreturn __declspec(noreturn)
# else
# define _Noreturn __attribute__((noreturn))
# endif
#endif
#define CHECK_SIZEOF(T) int(*_o)[sizeof(T)]=1
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
@ -28,7 +43,7 @@ extern _Thread_local lovrErrorHandler lovrErrorCallback;
extern _Thread_local void* lovrErrorUserdata;
void lovrSetErrorCallback(lovrErrorHandler callback, void* context);
void lovrThrow(const char* format, ...);
void _Noreturn lovrThrow(const char* format, ...);
void* _lovrAlloc(const char* type, size_t size, void (*destructor)(void*));
void lovrRetain(void* object);
void lovrRelease(void* object);