summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCosta Tsaousis <costa@netdata.cloud>2022-07-16 11:40:45 +0300
committerCosta Tsaousis <costa@netdata.cloud>2022-07-16 11:40:45 +0300
commit8b1c7950a21b5862236e6f6932eeda7cacaa4655 (patch)
tree46f96f9e04645e46446b8dadc6ef006f20af75fd
parent2f2997d196e55462070b4450a793cf32c0027614 (diff)
allow merging of families down to [x]
-rw-r--r--database/rrdcontext.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/database/rrdcontext.c b/database/rrdcontext.c
index bf9731e75b..84d35ea27a 100644
--- a/database/rrdcontext.c
+++ b/database/rrdcontext.c
@@ -1364,20 +1364,22 @@ static void rrdcontext_delete_callback(const char *id, void *value, void *data)
}
static STRING *string_2way_merge(RRDCONTEXT *rc __maybe_unused, STRING *a, STRING *b) {
- static STRING *X = NULL, *X2 = NULL;
+ static STRING *X = NULL;
if(unlikely(!X)) {
- X = string_strdupz("X");
- X2 = string_strdupz("[x]");
+ // initialization
+ X = string_strdupz("[x]");
}
if(unlikely(a == b)) return string_dup(a);
- if(unlikely(!a || a == X || a == X2)) return string_dup(b);
- if(unlikely(!b || b == X || b == X2)) return string_dup(a);
+ if(unlikely(a == X)) return string_dup(a);
+ if(unlikely(b == X)) return string_dup(b);
+ if(unlikely(!a)) return string_dup(X);
+ if(unlikely(!b)) return string_dup(X);
size_t alen = string_length(a);
size_t blen = string_length(b);
- size_t length = alen + blen + string_length(X2) + 1;
+ size_t length = alen + blen + string_length(X) + 1;
char buf1[length + 1], buf2[length + 1], *dst1, *dst2;
const char *s1, *s2;
@@ -1404,9 +1406,6 @@ static STRING *string_2way_merge(RRDCONTEXT *rc __maybe_unused, STRING *a, STRIN
strcpy(dst1, dst2);
}
- if(strcmp(buf1, string2str(X2)) == 0)
- return string_dup(a);
-
return string_strdupz(buf1);
}