mirror of https://github.com/bjornbytes/lovr.git
Use _Noreturn for lovrThrow;
Generates smaller and prettier assembly.
This commit is contained in:
parent
a67f59000f
commit
c999f10039
|
@ -16,6 +16,7 @@ void lovrThrow(const char* format, ...) {
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
lovrErrorCallback(lovrErrorUserdata, format, args);
|
lovrErrorCallback(lovrErrorUserdata, format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
|
19
src/util.h
19
src/util.h
|
@ -1,10 +1,25 @@
|
||||||
#include "lib/tinycthread/tinycthread.h"
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#pragma once
|
#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 CHECK_SIZEOF(T) int(*_o)[sizeof(T)]=1
|
||||||
|
|
||||||
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
|
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
|
||||||
|
@ -28,7 +43,7 @@ extern _Thread_local lovrErrorHandler lovrErrorCallback;
|
||||||
extern _Thread_local void* lovrErrorUserdata;
|
extern _Thread_local void* lovrErrorUserdata;
|
||||||
|
|
||||||
void lovrSetErrorCallback(lovrErrorHandler callback, void* context);
|
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* _lovrAlloc(const char* type, size_t size, void (*destructor)(void*));
|
||||||
void lovrRetain(void* object);
|
void lovrRetain(void* object);
|
||||||
void lovrRelease(void* object);
|
void lovrRelease(void* object);
|
||||||
|
|
Loading…
Reference in New Issue