Make redbean serialization deterministic

This commit is contained in:
Justine Tunney 2022-07-09 04:09:51 -07:00
parent 85aecbda67
commit c9e68b0ebc
15 changed files with 452 additions and 150 deletions

View file

@ -20,16 +20,23 @@
#include "libc/x/x.h"
#include "third_party/lua/visitor.h"
bool LuaPushVisit(struct LuaVisited *visited, const void *p) {
int i;
int LuaPushVisit(struct LuaVisited *visited, const void *p) {
int i, n2;
const void **p2;
for (i = 0; i < visited->n; ++i) {
if (visited->p[i] == p) {
return false;
return 1;
}
}
visited->p = xrealloc(visited->p, ++visited->n * sizeof(*visited->p));
n2 = visited->n;
if ((p2 = realloc(visited->p, ++n2 * sizeof(*visited->p)))) {
visited->p = p2;
visited->n = n2;
} else {
return -1;
}
visited->p[visited->n - 1] = p;
return true;
return 0;
}
void LuaPopVisit(struct LuaVisited *visited) {