gitlab-ci: enable sanitizers for the meson builds
[mesa-waffle.git] / src / waffle / core / wcore_util.c
blob8b068f457b428f9994c1ccc367cc9f272152a453
1 // SPDX-FileCopyrightText: Copyright 2012 Intel Corporation
2 // SPDX-License-Identifier: BSD-2-Clause
4 #include <stdlib.h>
6 #include "wcore_error.h"
7 #include "wcore_util.h"
9 bool
10 wcore_add_size(size_t *res, size_t x, size_t y)
12 if (x > SIZE_MAX - y) {
13 return false;
16 *res = x + y;
17 return true;
20 bool
21 wcore_mul_size(size_t *res, size_t x, size_t y)
23 if (x > SIZE_MAX / y) {
24 return false;
27 *res = x * y;
28 return true;
31 void*
32 wcore_malloc(size_t size)
34 void *p = malloc(size);
35 if (p == NULL)
36 wcore_error(WAFFLE_ERROR_BAD_ALLOC);
37 return p;
40 void*
41 wcore_calloc(size_t size)
43 void *p = calloc(1, size);
44 if (p == NULL)
45 wcore_error(WAFFLE_ERROR_BAD_ALLOC);
46 return p;
49 void*
50 wcore_realloc(void *ptr, size_t size)
52 void *p = realloc(ptr, size);
53 if (p == NULL)
54 wcore_error(WAFFLE_ERROR_BAD_ALLOC);
55 return p;
58 char*
59 wcore_strdup(const char *str)
61 char *p = strdup(str);
62 if (p == NULL)
63 wcore_error(WAFFLE_ERROR_BAD_ALLOC);
64 return p;
67 const char*
68 wcore_enum_to_string(int32_t e)
70 switch (e) {
71 #define CASE(x) case x: return #x
73 CASE(WAFFLE_DONT_CARE);
74 CASE(WAFFLE_NONE);
75 CASE(WAFFLE_PLATFORM);
76 CASE(WAFFLE_PLATFORM_ANDROID);
77 CASE(WAFFLE_PLATFORM_CGL);
78 CASE(WAFFLE_PLATFORM_GLX);
79 CASE(WAFFLE_PLATFORM_WAYLAND);
80 CASE(WAFFLE_PLATFORM_X11_EGL);
81 CASE(WAFFLE_PLATFORM_GBM);
82 CASE(WAFFLE_PLATFORM_WGL);
83 CASE(WAFFLE_PLATFORM_SURFACELESS_EGL);
84 CASE(WAFFLE_CONTEXT_API);
85 CASE(WAFFLE_CONTEXT_OPENGL);
86 CASE(WAFFLE_CONTEXT_OPENGL_ES1);
87 CASE(WAFFLE_CONTEXT_OPENGL_ES2);
88 CASE(WAFFLE_CONTEXT_OPENGL_ES3);
89 CASE(WAFFLE_CONTEXT_MAJOR_VERSION);
90 CASE(WAFFLE_CONTEXT_MINOR_VERSION);
91 CASE(WAFFLE_CONTEXT_PROFILE);
92 CASE(WAFFLE_CONTEXT_CORE_PROFILE);
93 CASE(WAFFLE_CONTEXT_COMPATIBILITY_PROFILE);
94 CASE(WAFFLE_CONTEXT_FORWARD_COMPATIBLE);
95 CASE(WAFFLE_CONTEXT_DEBUG);
96 CASE(WAFFLE_CONTEXT_ROBUST_ACCESS);
97 CASE(WAFFLE_CONTEXT_LOSE_CONTEXT_ON_RESET);
98 CASE(WAFFLE_RED_SIZE);
99 CASE(WAFFLE_GREEN_SIZE);
100 CASE(WAFFLE_BLUE_SIZE);
101 CASE(WAFFLE_ALPHA_SIZE);
102 CASE(WAFFLE_DEPTH_SIZE);
103 CASE(WAFFLE_STENCIL_SIZE);
104 CASE(WAFFLE_SAMPLE_BUFFERS);
105 CASE(WAFFLE_SAMPLES);
106 CASE(WAFFLE_DOUBLE_BUFFERED);
107 CASE(WAFFLE_ACCUM_BUFFER);
108 CASE(WAFFLE_DL_OPENGL);
109 CASE(WAFFLE_DL_OPENGL_ES1);
110 CASE(WAFFLE_DL_OPENGL_ES2);
111 CASE(WAFFLE_DL_OPENGL_ES3);
112 CASE(WAFFLE_WINDOW_WIDTH);
113 CASE(WAFFLE_WINDOW_HEIGHT);
114 CASE(WAFFLE_WINDOW_FULLSCREEN);
116 default: return NULL;
118 #undef CASE