From 24fb80efd75eab0b32d7fa4cde1d7843595e7555 Mon Sep 17 00:00:00 2001 From: fengzero Date: Tue, 10 Mar 2026 03:07:11 +0000 Subject: [PATCH] filter array in metas --- include/neuron/type.h | 5 +++++ src/adapter/driver/cache.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/neuron/type.h b/include/neuron/type.h index 58f77589..c021b16f 100644 --- a/include/neuron/type.h +++ b/include/neuron/type.h @@ -345,6 +345,11 @@ typedef struct { uint8_t precision; } neu_dvalue_t; +static inline bool neu_dvalue_is_array(const neu_dvalue_t *dvalue) +{ + return dvalue->type >= NEU_TYPE_ARRAY_CHAR; +} + static inline bool neu_equal_dvalue(const neu_dvalue_t *one, neu_dvalue_t *two) { if (one == NULL || two == NULL) { diff --git a/src/adapter/driver/cache.c b/src/adapter/driver/cache.c index a4e8a84a..d76941bf 100644 --- a/src/adapter/driver/cache.c +++ b/src/adapter/driver/cache.c @@ -849,7 +849,12 @@ bool neu_driver_cache_update_change(neu_driver_cache_t *cache, } elem->metas = calloc(n_meta, sizeof(neu_tag_meta_t)); for (int i = 0; i < n_meta; i++) { - memcpy(&elem->metas[i], &metas[i], sizeof(neu_tag_meta_t)); + if (!neu_dvalue_is_array(&metas[i].value)) { + memcpy(&elem->metas[i], &metas[i], sizeof(neu_tag_meta_t)); + } else { + neu_free_dvalue(&metas[i].value); + elem->metas[i].value.type = NEU_TYPE_INT8; + } } elem->n_meta = n_meta;