diff --git a/src/restart.c b/src/restart.c index ed9d346457c60bbec81e85d66e800018d16b0e7f..e3511bc48828b7fa952441213d169031628d578a 100644 --- a/src/restart.c +++ b/src/restart.c @@ -191,19 +191,21 @@ void restart_read(struct engine *e, const char *filename) { if (stream == NULL) error("Failed to open restart file: %s (%s)", filename, strerror(errno)); - /* Get our version and signature back. These should match. */ - char signature[strlen(SWIFT_RESTART_SIGNATURE) + 1]; - int len = strlen(SWIFT_RESTART_SIGNATURE); - restart_read_blocks(signature, len, 1, stream, NULL, "SWIFT signature"); - signature[len] = '\0'; - if (strncmp(signature, SWIFT_RESTART_SIGNATURE, len) != 0) + /* Get our version and signature back. These should match. + * Use static int here to avoid compiler warnings about gnu-extensions + * of folding a variable length array to constant array. */ + const int sig_len = strlen(SWIFT_RESTART_SIGNATURE); + char signature[sig_len + 1]; + restart_read_blocks(signature, sig_len, 1, stream, NULL, "SWIFT signature"); + signature[sig_len] = '\0'; + if (strncmp(signature, SWIFT_RESTART_SIGNATURE, sig_len) != 0) error( "Do not recognise this as a SWIFT restart file, found '%s' " "expected '%s'", signature, SWIFT_RESTART_SIGNATURE); char version[FNAMELEN]; - len = strlen(package_version()); + int len = strlen(package_version()); restart_read_blocks(version, len, 1, stream, NULL, "SWIFT version"); version[len] = '\0';