Use a dedicated copy function to copy dsfs.

Previously we were duplicating the contents of a dsf using straight-up
memcpy. Now there's a dsf_copy function wrapping the same memcpy.

For the moment, this still has to take a size parameter, because the
size isn't stored inside the dsf itself. But once we make a proper
data type, it will be.
This commit is contained in:
Simon Tatham
2023-04-20 13:52:13 +01:00
parent bb561ee3b1
commit 11a8149d67
5 changed files with 14 additions and 9 deletions

View File

@ -457,8 +457,7 @@ static solver_state *dup_solver_state(const solver_state *sstate) {
ret->dotdsf = snewn(num_dots, int);
ret->looplen = snewn(num_dots, int);
memcpy(ret->dotdsf, sstate->dotdsf,
num_dots * sizeof(int));
dsf_copy(ret->dotdsf, sstate->dotdsf, num_dots);
memcpy(ret->looplen, sstate->looplen,
num_dots * sizeof(int));
@ -487,8 +486,7 @@ static solver_state *dup_solver_state(const solver_state *sstate) {
if (sstate->linedsf) {
ret->linedsf = snewn(num_edges, int);
memcpy(ret->linedsf, sstate->linedsf,
num_edges * sizeof(int));
dsf_copy(ret->linedsf, sstate->linedsf, num_edges);
} else {
ret->linedsf = NULL;
}