aboutsummaryrefslogtreecommitdiffstats
path: root/src/zadd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/zadd.c')
-rw-r--r--src/zadd.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/zadd.c b/src/zadd.c
index 557ec6f..b730b81 100644
--- a/src/zadd.c
+++ b/src/zadd.c
@@ -72,6 +72,33 @@ zadd_unsigned(z_t a, z_t b, z_t c)
}
void
+zadd_unsigned_assign(z_t a, z_t b)
+{
+ size_t size, n;
+
+ if (unlikely(zzero(a))) {
+ zabs(a, b);
+ return;
+ } else if (unlikely(zzero(b))) {
+ return;
+ }
+
+ size = MAX(a->used, b->used);
+ n = a->used + b->used - size;
+
+ ENSURE_SIZE(a, size + 1);
+ a->chars[size] = 0;
+
+ if (a->used < b->used) {
+ n = b->used;
+ zmemset(a->chars + a->used, 0, n - a->used);
+ }
+ zadd_impl(a, b, n);
+
+ SET_SIGNUM(a, 1);
+}
+
+void
zadd(z_t a, z_t b, z_t c)
{
if (unlikely(zzero(b))) {