Fix two node-copying bugs in update
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "Facade.h"
|
||||
#include "PrintMutation.h"
|
||||
#include "VersionedMap.h"
|
||||
#include <inttypes.h>
|
||||
|
||||
@@ -24,6 +25,8 @@ weaselab::VersionedMap::Mutation clear(weaselab::VersionedMap::Key begin,
|
||||
return {begin.p, end.p, begin.len, end.len, weaselab::VersionedMap::Clear};
|
||||
}
|
||||
|
||||
void breakpoint_me() {}
|
||||
|
||||
int main() {
|
||||
Facade f(0);
|
||||
int64_t version = 1;
|
||||
@@ -42,13 +45,14 @@ int main() {
|
||||
}
|
||||
for (int64_t i = 0; i < version; ++i) {
|
||||
printf("--- version %" PRId64 " ---\n", i);
|
||||
auto result = f.viewAt(i).rangeRead("a"_s, "d"_s, 10, false);
|
||||
printf("merged:\n");
|
||||
auto result = f.viewAt(i).rangeRead("a"_s, "z"_s, 100, false);
|
||||
for (const auto &[k, v] : result) {
|
||||
for (auto c : k) {
|
||||
if (isprint(c)) {
|
||||
printf("%c", c);
|
||||
} else {
|
||||
printf("0x%02x", c);
|
||||
printf("x%02x", c);
|
||||
}
|
||||
}
|
||||
printf(" -> ");
|
||||
@@ -56,10 +60,35 @@ int main() {
|
||||
if (isprint(c)) {
|
||||
printf("%c", c);
|
||||
} else {
|
||||
printf("0x%02x", c);
|
||||
printf("x%02x", c);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("unversioned:\n");
|
||||
for (const auto &[k, v] : f.unversioned) {
|
||||
for (auto c : k) {
|
||||
if (isprint(c)) {
|
||||
printf("%c", c);
|
||||
} else {
|
||||
printf("x%02x", c);
|
||||
}
|
||||
}
|
||||
printf(" -> ");
|
||||
for (auto c : v) {
|
||||
if (isprint(c)) {
|
||||
printf("%c", c);
|
||||
} else {
|
||||
printf("x%02x", c);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
breakpoint_me();
|
||||
printf("versioned:\n");
|
||||
for (auto iter = f.versioned.begin(i), end = f.versioned.end(i);
|
||||
iter != end; ++iter) {
|
||||
printMutation(*iter);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user