commit 7c934801f88c640970ad41b5ddd39f4e39609f28
parent 243a852d31483d10983c50978d1d4471efd0e553
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Tue, 27 May 2025 09:03:51 +0200
Removed VLA notation from function parameters.
I found out that this gives undefined behavior when then size is 0.
Better not to have it at all, it is confusing for other developers anyway.
Diffstat:
13 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/src/core/moves.h b/src/core/moves.h
@@ -3,13 +3,13 @@
STATIC uint8_t readmove(char);
STATIC int64_t readmoves(const char *,
- size_t n, size_t m, uint64_t *, uint64_t *, uint8_t [n], uint8_t [m]);
+ size_t, size_t, uint64_t *, uint64_t *, uint8_t *, uint8_t *);
STATIC int64_t countmoves(const char *);
STATIC uint8_t readmodifier(char);
-STATIC int64_t writemoves(size_t n, const uint8_t [n], size_t m, char [m]);
+STATIC int64_t writemoves(size_t, const uint8_t *, size_t, char *);
STATIC_INLINE bool allowednextmove(uint8_t, uint8_t);
-STATIC bool allowedmoves(size_t n, const uint8_t [n]);
+STATIC bool allowedmoves(size_t, const uint8_t *);
STATIC_INLINE uint8_t movebase(uint8_t);
STATIC_INLINE uint8_t moveaxis(uint8_t);
@@ -24,8 +24,8 @@ STATIC uint8_t transform_move(uint8_t, uint8_t);
STATIC cube_t move(cube_t, uint8_t);
STATIC cube_t premove(cube_t, uint8_t);
STATIC uint8_t inverse_move(uint8_t);
-STATIC void sortparallel_moves(size_t n, uint8_t [n]);
-STATIC bool are_lastmoves_singlecw(size_t n, const uint8_t [n]);
+STATIC void sortparallel_moves(size_t, uint8_t*);
+STATIC bool are_lastmoves_singlecw(size_t, const uint8_t*);
#define FOREACH_READMOVE(ARG_BUF, ARG_MOVE, ARG_C, ARG_MAX, \
RET_ERROR, ARG_ACTION) \
@@ -126,8 +126,8 @@ readmoves(
size_t invsize,
uint64_t *n,
uint64_t *i,
- uint8_t normal[nsize],
- uint8_t inverse[invsize]
+ uint8_t *normal,
+ uint8_t *inverse
)
{
uint8_t m;
@@ -171,9 +171,9 @@ countmoves(const char *buf)
STATIC int64_t
writemoves(
size_t nmoves,
- const uint8_t m[nmoves],
+ const uint8_t *m,
size_t buf_size,
- char buf[buf_size]
+ char *buf
)
{
size_t i, len, w;
@@ -214,7 +214,7 @@ allowednextmove(uint8_t m1, uint8_t m2)
}
STATIC bool
-allowedmoves(size_t n, const uint8_t m[n])
+allowedmoves(size_t n, const uint8_t *m)
{
uint8_t j;
@@ -422,7 +422,7 @@ inverse_move(uint8_t m)
}
STATIC void
-sortparallel_moves(size_t n, uint8_t moves[n])
+sortparallel_moves(size_t n, uint8_t *moves)
{
uint8_t i;
@@ -435,7 +435,7 @@ sortparallel_moves(size_t n, uint8_t moves[n])
}
STATIC bool
-are_lastmoves_singlecw(size_t n, const uint8_t moves[n])
+are_lastmoves_singlecw(size_t n, const uint8_t *moves)
{
bool two;
diff --git a/src/nissy.c b/src/nissy.c
@@ -215,7 +215,7 @@ long long
nissy_gendata(
const char *solver,
unsigned long long data_size,
- unsigned char data[data_size]
+ unsigned char *data
)
{
return nissy_gendata_unsafe(solver, data_size, data);
@@ -253,7 +253,7 @@ long long
nissy_checkdata(
const char *solver,
unsigned long long data_size,
- const unsigned char data[data_size]
+ const unsigned char *data
)
{
solver_dispatch_t *dispatch;
@@ -278,9 +278,9 @@ nissy_solve(
unsigned optimal,
unsigned threads,
unsigned long long data_size,
- const unsigned char data[data_size],
+ const unsigned char *data,
unsigned sols_size,
- char sols[sols_size],
+ char *sols,
long long stats[static NISSY_SIZE_SOLVE_STATS],
int (*poll_status)(void *),
void *poll_status_data
diff --git a/src/nissy.h b/src/nissy.h
@@ -276,7 +276,7 @@ long long
nissy_gendata(
const char *solver,
unsigned long long data_size,
- unsigned char data[data_size]
+ unsigned char *data
);
/*
@@ -296,7 +296,7 @@ long long
nissy_checkdata(
const char *solver,
unsigned long long data_size,
- const unsigned char data[data_size]
+ const unsigned char *data
);
/*
@@ -352,9 +352,9 @@ nissy_solve(
unsigned optimal,
unsigned threads,
unsigned long long data_size,
- const unsigned char data[data_size],
+ const unsigned char *data,
unsigned sols_size,
- char sols[sols_size],
+ char *sols,
long long stats[static NISSY_SIZE_SOLVE_STATS],
int (*poll_status)(void *),
void *poll_status_data
diff --git a/src/solvers/coord/checkdata.h b/src/solvers/coord/checkdata.h
@@ -1,11 +1,11 @@
STATIC long long checkdata_coord(
- const char *, unsigned long long n, const unsigned char [n]);
+ const char *, unsigned long long, const unsigned char *);
STATIC long long
checkdata_coord(
const char *solver,
unsigned long long data_size,
- const unsigned char data[data_size]
+ const unsigned char *data
)
{
coord_t *coord;
diff --git a/src/solvers/coord/common.h b/src/solvers/coord/common.h
@@ -9,7 +9,7 @@ STATIC size_t coord_gendata_generic(const coord_t [static 1], unsigned char *);
STATIC void append_coord_name(const coord_t [static 1], char *);
STATIC bool solution_lastqt_cw(const solution_moves_t [static 1]);
STATIC bool coord_can_switch(const coord_t [static 1], const unsigned char *,
- size_t n, const uint8_t [n]);
+ size_t, const uint8_t *);
STATIC uint64_t
coord_coord_generic(
@@ -164,7 +164,7 @@ coord_can_switch(
const coord_t coord[static 1],
const unsigned char *data,
size_t n,
- const uint8_t moves[n]
+ const uint8_t *moves
)
{
/*
diff --git a/src/solvers/coord/solve.h b/src/solvers/coord/solve.h
@@ -13,13 +13,12 @@ typedef struct {
} dfsarg_solve_coord_t;
STATIC int64_t solve_coord(oriented_cube_t, coord_t [static 1], uint8_t,
- uint8_t, uint8_t, uint8_t, uint64_t, uint8_t, uint8_t, uint64_t n,
- const unsigned char [n], size_t m, char [m], int (*)(void *), void *);
+ uint8_t, uint8_t, uint8_t, uint64_t, uint8_t, uint8_t, uint64_t,
+ const unsigned char *, size_t, char *, int (*)(void *), void *);
STATIC long long solve_coord_dispatch(oriented_cube_t, const char *, unsigned,
- unsigned, unsigned, unsigned, unsigned, unsigned, unsigned long long n,
- const unsigned char [n], unsigned m, char [m],
- long long [static NISSY_SIZE_SOLVE_STATS],
- int (*)(void *), void *);
+ unsigned, unsigned, unsigned, unsigned, unsigned, unsigned long long,
+ const unsigned char *, unsigned, char *,
+ long long [static NISSY_SIZE_SOLVE_STATS], int (*)(void *), void *);
STATIC bool coord_solution_admissible(const dfsarg_solve_coord_t [static 1]);
STATIC bool solve_coord_dfs_stop(const dfsarg_solve_coord_t [static 1]);
STATIC bool coord_continue_onnormal(const dfsarg_solve_coord_t [static 1]);
@@ -210,9 +209,9 @@ solve_coord_dispatch(
unsigned optimal,
unsigned threads,
unsigned long long data_size,
- const unsigned char data[data_size],
+ const unsigned char *data,
unsigned solutions_size,
- char sols[solutions_size],
+ char *sols,
long long stats[static NISSY_SIZE_SOLVE_STATS],
int (*poll_status)(void *),
void *poll_status_data
@@ -251,9 +250,9 @@ solve_coord(
uint8_t optimal,
uint8_t threads,
uint64_t data_size,
- const unsigned char data[data_size],
+ const unsigned char *data,
size_t solutions_size,
- char sols[solutions_size],
+ char *sols,
int (*poll_status)(void *),
void *poll_status_data
)
diff --git a/src/solvers/coord/utils.h b/src/solvers/coord/utils.h
@@ -1,10 +1,10 @@
-STATIC coord_t *parse_coord(size_t n, const char [n]);
+STATIC coord_t *parse_coord(size_t, const char *);
STATIC uint8_t parse_axis(const char [static 2]);
STATIC void parse_coord_and_axis(const char *, coord_t **, uint8_t *);
STATIC long long dataid_coord(const char *, char [static NISSY_SIZE_DATAID]);
STATIC coord_t *
-parse_coord(size_t n, const char coord[n])
+parse_coord(size_t n, const char *coord)
{
int i;
diff --git a/src/solvers/dispatch.h b/src/solvers/dispatch.h
@@ -2,7 +2,7 @@ typedef struct {
const char *prefix;
long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]);
long long (*gendata)(
- const char *, unsigned long long n, unsigned char [n]);
+ const char *, unsigned long long, unsigned char *);
long long (*checkdata)(
const char *, unsigned long long, const unsigned char *);
long long (*solve)(oriented_cube_t, const char *, unsigned, unsigned,
diff --git a/src/solvers/h48/checkdata.h b/src/solvers/h48/checkdata.h
@@ -1,5 +1,5 @@
STATIC long long checkdata_h48(
- const char *, unsigned long long n, const unsigned char [n]);
+ const char *, unsigned long long, const unsigned char *);
/*
Currently unused.
@@ -178,7 +178,7 @@ STATIC long long
checkdata_h48(
const char *solver,
unsigned long long data_size,
- const unsigned char data[data_size]
+ const unsigned char *data
)
{
const unsigned char *table;
diff --git a/src/solvers/h48/solve.h b/src/solvers/h48/solve.h
@@ -49,8 +49,8 @@ typedef struct {
} dfsarg_solve_h48_maketasks_t;
STATIC long long solve_h48_dispatch(oriented_cube_t, const char *, unsigned,
- unsigned, unsigned, unsigned, unsigned, unsigned, unsigned long long n,
- const unsigned char [n], unsigned m, char [m],
+ unsigned, unsigned, unsigned, unsigned, unsigned, unsigned long long,
+ const unsigned char *, unsigned, char *,
long long [static NISSY_SIZE_SOLVE_STATS], int (*)(void *), void *);
STATIC_INLINE bool solve_h48_stop(dfsarg_solve_h48_t [static 1]);
STATIC int64_t solve_h48_maketasks(
@@ -60,7 +60,7 @@ STATIC void *solve_h48_runthread(void *);
STATIC int64_t solve_h48_dfs(dfsarg_solve_h48_t [static 1]);
STATIC void solve_h48_log_solutions(solution_list_t [static 1], size_t);
STATIC int64_t solve_h48(oriented_cube_t, uint8_t, uint8_t, uint8_t, uint8_t,
- uint8_t, uint64_t, const unsigned char *, size_t n, char [n],
+ uint8_t, uint64_t, const unsigned char *, size_t, char *,
long long [static NISSY_SIZE_SOLVE_STATS], int (*)(void *), void *);
STATIC long long solve_h48_dispatch(
@@ -73,9 +73,9 @@ STATIC long long solve_h48_dispatch(
unsigned optimal,
unsigned threads,
unsigned long long data_size,
- const unsigned char data[data_size],
+ const unsigned char *data,
unsigned sols_size,
- char sols[sols_size],
+ char *sols,
long long stats[static NISSY_SIZE_SOLVE_STATS],
int (*poll_status)(void *),
void *poll_status_data
@@ -410,7 +410,7 @@ solve_h48(
uint64_t data_size,
const unsigned char *data,
size_t solutions_size,
- char solutions[solutions_size],
+ char *solutions,
long long stats[static NISSY_SIZE_SOLVE_STATS],
int (*poll_status)(void *),
void *poll_status_data
diff --git a/src/solvers/solutions.h b/src/solvers/solutions.h
@@ -1,11 +1,10 @@
STATIC void solution_moves_reset(solution_moves_t [static 1]);
STATIC void solution_moves_transform(solution_moves_t [static 1], uint8_t);
STATIC void solution_moves_reorient(solution_moves_t [static 1], uint8_t);
-STATIC bool solution_list_init(
- solution_list_t [static 1], size_t n, char [n]);
+STATIC bool solution_list_init(solution_list_t [static 1], size_t, char *);
STATIC bool solution_moves_equal(
const solution_moves_t [static 1], const solution_moves_t [static 1]);
-STATIC bool solution_moves_is_duplicate(size_t n, const solution_moves_t[n+1]);
+STATIC bool solution_moves_is_duplicate(size_t, const solution_moves_t *);
STATIC bool appendchar(solution_list_t [static 1], char);
STATIC bool appendnormal(
const solution_moves_t [static 1], solution_list_t [static 1]);
@@ -50,7 +49,7 @@ solution_moves_reorient(solution_moves_t moves[static 1], uint8_t or)
}
STATIC bool
-solution_list_init(solution_list_t sols[static 1], size_t n, char buf[n])
+solution_list_init(solution_list_t sols[static 1], size_t n, char *buf)
{
if (n == 0)
return false;
@@ -88,7 +87,7 @@ solution_moves_equal(
}
STATIC bool
-solution_moves_is_duplicate(size_t n, const solution_moves_t s[n+1])
+solution_moves_is_duplicate(size_t n, const solution_moves_t *s)
{
size_t i;
diff --git a/src/solvers/tables.h b/src/solvers/tables.h
@@ -1,11 +1,13 @@
-STATIC uint64_t read_unaligned_u64(const unsigned char [static sizeof(uint64_t)]);
-STATIC void write_unaligned_u64(unsigned char [static sizeof(uint64_t)], uint64_t);
+STATIC uint64_t read_unaligned_u64(
+ const unsigned char [static sizeof(uint64_t)]);
+STATIC void write_unaligned_u64(
+ unsigned char [static sizeof(uint64_t)], uint64_t);
STATIC int64_t readtableinfo(
- size_t n, const unsigned char [n], tableinfo_t [static 1]);
+ size_t, const unsigned char *, tableinfo_t [static 1]);
STATIC int64_t readtableinfo_n(
- size_t n, const unsigned char [n], uint8_t, tableinfo_t [static 1]);
+ size_t, const unsigned char *, uint8_t, tableinfo_t [static 1]);
STATIC int64_t writetableinfo(
- const tableinfo_t [static 1], size_t n, unsigned char [n]);
+ const tableinfo_t [static 1], size_t, unsigned char *);
STATIC uint64_t
read_unaligned_u64(const unsigned char buf[static sizeof(uint64_t)])
@@ -26,7 +28,7 @@ write_unaligned_u64(unsigned char buf[static sizeof(uint64_t)], uint64_t x)
STATIC int64_t
readtableinfo(
size_t buf_size,
- const unsigned char buf[buf_size],
+ const unsigned char *buf,
tableinfo_t info[static 1]
)
{
@@ -70,7 +72,7 @@ readtableinfo(
STATIC int64_t
readtableinfo_n(
size_t buf_size,
- const unsigned char buf[buf_size],
+ const unsigned char *buf,
uint8_t n,
tableinfo_t info[static 1]
)
@@ -88,7 +90,7 @@ STATIC int64_t
writetableinfo(
const tableinfo_t info[static 1],
size_t data_size,
- unsigned char buf[data_size]
+ unsigned char *buf
)
{
size_t i;
diff --git a/src/utils/math.h b/src/utils/math.h
@@ -4,12 +4,12 @@
#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
STATIC int64_t factorial(int64_t);
-STATIC bool isperm(size_t n, const uint8_t [n]);
-STATIC int64_t permtoindex(size_t n, const uint8_t [n]);
-STATIC void indextoperm(int64_t, size_t n, uint8_t [n]);
-STATIC int permsign(size_t n, const uint8_t [n]);
-STATIC int64_t digitstosumzero(size_t n, const uint8_t [n], uint8_t);
-STATIC void sumzerotodigits(int64_t, size_t n, uint8_t, uint8_t [n]);
+STATIC bool isperm(size_t, const uint8_t *);
+STATIC int64_t permtoindex(size_t, const uint8_t *);
+STATIC void indextoperm(int64_t, size_t, uint8_t *);
+STATIC int permsign(size_t, const uint8_t *);
+STATIC int64_t digitstosumzero(size_t, const uint8_t *, uint8_t);
+STATIC void sumzerotodigits(int64_t, size_t, uint8_t, uint8_t *);
STATIC double intpow(double, uint64_t);
STATIC int64_t
@@ -33,7 +33,7 @@ factorial(int64_t n)
}
STATIC bool
-isperm(size_t n, const uint8_t a[n])
+isperm(size_t n, const uint8_t *a)
{
size_t i;
bool aux[FACTORIAL_MAX+1];
@@ -61,7 +61,7 @@ isperm(size_t n, const uint8_t a[n])
}
STATIC int64_t
-permtoindex(size_t n, const uint8_t a[n])
+permtoindex(size_t n, const uint8_t *a)
{
size_t i, j;
int64_t c, ret;
@@ -85,7 +85,7 @@ permtoindex(size_t n, const uint8_t a[n])
}
STATIC void
-indextoperm(int64_t p, size_t n, uint8_t r[n])
+indextoperm(int64_t p, size_t n, uint8_t *r)
{
int64_t c;
size_t i, j;
@@ -120,7 +120,7 @@ indextoperm_error:
}
STATIC int
-permsign(size_t n, const uint8_t a[n])
+permsign(size_t n, const uint8_t *a)
{
size_t i, j, ret;
@@ -132,7 +132,7 @@ permsign(size_t n, const uint8_t a[n])
}
STATIC int64_t
-digitstosumzero(size_t n, const uint8_t a[n], uint8_t b)
+digitstosumzero(size_t n, const uint8_t *a, uint8_t b)
{
int64_t ret, p;
size_t i, sum;
@@ -162,7 +162,7 @@ digitstosumzero(size_t n, const uint8_t a[n], uint8_t b)
}
STATIC void
-sumzerotodigits(int64_t d, size_t n, uint8_t b, uint8_t a[n])
+sumzerotodigits(int64_t d, size_t n, uint8_t b, uint8_t *a)
{
uint8_t sum;
size_t i;