summaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-03 07:30:23 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-04 11:06:23 +0200
commit0c8efc4b204508571761a86853399ec40c4ce136 (patch)
treecfe63ecf1e59465841524e88b8aa20906b20b185
parentf41b2d5e196713438f530b1a66d49920f199ed1d (diff)
vkvg_pattern_create_solid, vkvg_status_no_memory on pattern memory alloc failure
-rw-r--r--src/vkvg_pattern.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/vkvg_pattern.c b/src/vkvg_pattern.c
index 8843679..9bc21b9 100644
--- a/src/vkvg_pattern.c
+++ b/src/vkvg_pattern.c
@@ -25,6 +25,17 @@
#include "vkvg_device_internal.h"
#include "vkvg_pattern.h"
+VkvgPattern vkvg_pattern_create_solid(float r, float g, float b, float a) {
+ VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t));
+ if (!pat) {
+ LOG(VKVG_LOG_ERR, "CREATE Pattern failed, no memory\n");
+ return (VkvgPattern)&_vkvg_status_no_memory;
+ }
+ pat->type = VKVG_PATTERN_TYPE_SOLID;
+ pat->extend = VKVG_EXTEND_NONE;
+
+ return pat;
+}
VkvgPattern vkvg_pattern_create_for_surface(VkvgSurface surf) {
if (!surf) {
LOG(VKVG_LOG_ERR, "CREATE Pattern failed, invalid surface\n");
@@ -33,7 +44,7 @@ VkvgPattern vkvg_pattern_create_for_surface(VkvgSurface surf) {
VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t));
if (!pat) {
LOG(VKVG_LOG_ERR, "CREATE Pattern failed, no memory\n");
- return (VkvgPattern)&_vkvg_status_null_pointer;
+ return (VkvgPattern)&_vkvg_status_no_memory;
}
pat->type = VKVG_PATTERN_TYPE_SURFACE;
@@ -76,7 +87,7 @@ VkvgPattern vkvg_pattern_create_linear(float x0, float y0, float x1, float y1) {
VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t));
if (!pat) {
LOG(VKVG_LOG_ERR, "CREATE Pattern failed, no memory\n");
- return (VkvgPattern)&_vkvg_status_null_pointer;
+ return (VkvgPattern)&_vkvg_status_no_memory;
}
pat->type = VKVG_PATTERN_TYPE_LINEAR;
pat->extend = VKVG_EXTEND_NONE;
@@ -121,7 +132,7 @@ VkvgPattern vkvg_pattern_create_radial(float cx0, float cy0, float radius0, floa
VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t));
if (!pat) {
LOG(VKVG_LOG_ERR, "CREATE Pattern failed, no memory\n");
- return (VkvgPattern)&_vkvg_status_null_pointer;
+ return (VkvgPattern)&_vkvg_status_no_memory;
}
pat->type = VKVG_PATTERN_TYPE_RADIAL;
pat->extend = VKVG_EXTEND_NONE;
@@ -248,7 +259,7 @@ void vkvg_pattern_destroy(VkvgPattern pat) {
if (pat->type == VKVG_PATTERN_TYPE_SURFACE) {
VkvgSurface surf = (VkvgSurface)pat->data;
vkvg_surface_destroy(surf);
- } else
+ } else if (pat->type != VKVG_PATTERN_TYPE_SOLID)
free(pat->data);
free(pat);