Fix two node-copying bugs in update

This commit is contained in:
2024-05-14 17:44:01 -07:00
parent 862fc3297c
commit 67c8ca8f3a
4 changed files with 74 additions and 17 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include "VersionedMap.h"
#include <ctype.h>
#include <inttypes.h>
#include <stdio.h>
@@ -10,22 +11,42 @@ printMutation(const weaselab::VersionedMap::Iterator::VersionedMutation &m) {
case weaselab::VersionedMap::Set:
printf("set ");
for (int i = 0; i < m.param1Len; ++i) {
printf("x%02x", m.param1[i]);
auto c = m.param1[i];
if (isprint(c)) {
printf("%c", c);
} else {
printf("x%02x", c);
}
}
printf(" -> '");
for (int i = 0; i < m.param2Len; ++i) {
printf("x%02x", m.param2[i]);
auto c = m.param2[i];
if (isprint(c)) {
printf("%c", c);
} else {
printf("x%02x", c);
}
}
printf("' @ %" PRId64 "\n", m.version);
break;
case weaselab::VersionedMap::Clear:
printf("clear [");
for (int i = 0; i < m.param1Len; ++i) {
printf("x%02x", m.param1[i]);
auto c = m.param1[i];
if (isprint(c)) {
printf("%c", c);
} else {
printf("x%02x", c);
}
}
printf(", ");
for (int i = 0; i < m.param2Len; ++i) {
printf("x%02x", m.param2[i]);
auto c = m.param2[i];
if (isprint(c)) {
printf("%c", c);
} else {
printf("x%02x", c);
}
}
printf(") @ %" PRId64 "\n", m.version);
break;