aboutsummaryrefslogtreecommitdiffstats
path: root/ensize.c
diff options
context:
space:
mode:
authorTomasz Kramkowski <tk@the-tk.com>2018-05-02 21:22:03 +0100
committerTomasz Kramkowski <tk@the-tk.com>2018-05-02 21:22:03 +0100
commitb659c412263f6dd7df962f7d42f4f51b7c3d5609 (patch)
treee2495e0b1446527b909a9c9fa2776797c7c28221 /ensize.c
parentec93a8eddf70adef2b1439a511d990021ad25d99 (diff)
downloadfaqe-b659c412263f6dd7df962f7d42f4f51b7c3d5609.tar.gz
faqe-b659c412263f6dd7df962f7d42f4f51b7c3d5609.tar.xz
faqe-b659c412263f6dd7df962f7d42f4f51b7c3d5609.zip
Implement diffuse texture loading and basic material support
Diffstat (limited to 'ensize.c')
-rw-r--r--ensize.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ensize.c b/ensize.c
new file mode 100644
index 0000000..82835a7
--- /dev/null
+++ b/ensize.c
@@ -0,0 +1,20 @@
+#include <assert.h>
+
+#include "ensize.h"
+#include "eprintf.h"
+
+// ensize: realloc p if it is smaller than count given current size
+void *ensize(void *p, size_t selem, size_t nelem, size_t *cur, size_t init)
+{
+ assert(cur != NULL);
+
+ if (*cur >= nelem * selem)
+ return p;
+
+ if (*cur == 0)
+ *cur = init * selem;
+ else
+ *cur *= 2;
+
+ return erealloc(p, *cur);
+}