commit 0f4931c8de298b0f97aba1757c9538f48adb30c6
parent 9154476ba6bf400c1eb379f0a3aa6caae2d06d4d
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Tue, 25 Mar 2025 15:17:00 +0100
Tiny bugfix in solution writing
Diffstat:
4 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/src/core/io_moves.h b/src/core/io_moves.h
@@ -79,36 +79,31 @@ writemoves(
char buf[buf_size]
)
{
- size_t i, len, written;
+ size_t i, len, w;
const char *s;
- char *b;
if (buf_size == 0) {
LOG("Error: cannot write moves to buffer of size 0.\n");
return NISSY_ERROR_BUFFER_SIZE;
}
- for (i = 0, b = buf, written = 0; i < nmoves; i++, b++, written++) {
+ for (i = 0, w = 0; i < nmoves; i++, w++) {
s = movestr[m[i]];
len = strlen(s);
- if (len + written >= buf_size) {
+ if (len + w >= buf_size) {
LOG("Error: the given buffer is too small for "
"writing the given moves.\n");
goto writemoves_error;
}
- memcpy(b, s, len);
- written += len;
- b += len;
- *b = ' ';
+ memcpy(buf+w, s, len);
+ w += len;
+ buf[w] = ' ';
}
- if (b == buf)
- written = 1; /* Nothing written, only NULL-terminator */
- else
- b--; /* Remove last space */
- *b = '\0';
+ if (w > 0) w--; /* Remove last space */
+ buf[w] = '\0';
- return (int64_t)written;
+ return (int64_t)w;
writemoves_error:
*buf = '\0';
diff --git a/src/solvers/solutions.h b/src/solvers/solutions.h
@@ -152,12 +152,13 @@ appendsolution(
list->size - list->used, list->buf + list->used);
if (strl < 0)
goto appendsolution_error_buffer;
- list->used += (size_t)(strl-1);
+ list->used += strl;
/* Write moves on inverse with NISS notation */
if (tsol[r].npremoves > 0) {
- if (!appendchar(list, ' '))
- goto appendsolution_error_buffer;
+ if (strl > 0)
+ if (!appendchar(list, ' '))
+ goto appendsolution_error_buffer;
if (!appendchar(list, '('))
goto appendsolution_error_buffer;
@@ -165,7 +166,7 @@ appendsolution(
list->size - list->used, list->buf + list->used);
if (strl < 0)
goto appendsolution_error_buffer;
- list->used += (size_t)(strl-1);
+ list->used += strl;
if (!appendchar(list, ')'))
goto appendsolution_error_buffer;
diff --git a/test/130_appendsolution/09_fullinverse_niss.in b/test/130_appendsolution/09_fullinverse_niss.in
@@ -0,0 +1,5 @@
+
+F
+0
+1
+rotation UF
diff --git a/test/130_appendsolution/09_fullinverse_niss.out b/test/130_appendsolution/09_fullinverse_niss.out
@@ -0,0 +1,4 @@
+(F)
+Number of solutions: 1
+Shortest solution length: 1
+Used bytes: 4