From a0234afc5b72c8a28b1ea5ec78fbc37c60ff85ce Mon Sep 17 00:00:00 2001 From: Roxane M Date: Mon, 29 Sep 2025 18:24:39 +0300 Subject: [PATCH 1/7] fixed "format mismatch" error --- system7/Utils/S7Logging.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system7/Utils/S7Logging.m b/system7/Utils/S7Logging.m index d556e76..6cd664d 100644 --- a/system7/Utils/S7Logging.m +++ b/system7/Utils/S7Logging.m @@ -50,7 +50,7 @@ void logInfo(const char * __restrict format, ...) { void logError(const char * __restrict format, ...) { va_list va_args; va_start(va_args, format); - NSString *const nsFormat = [[NSString alloc] initWithCString:format encoding:NSUTF8StringEncoding]; + NSString *const nsFormat = [NSString stringWithFormat:@"%@", [NSString stringWithUTF8String:format]]; NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; va_end(va_args); From ee4b180aecce7c2ba8b1f497723fd2fb78ec806e Mon Sep 17 00:00:00 2001 From: Roxane M Date: Mon, 29 Sep 2025 18:25:41 +0300 Subject: [PATCH 2/7] fixed "const vs variable array" ambiguity --- system7/Merge Driver/S7ConfigMergeDriver.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system7/Merge Driver/S7ConfigMergeDriver.m b/system7/Merge Driver/S7ConfigMergeDriver.m index 5ac7dc0..3e34b84 100644 --- a/system7/Merge Driver/S7ConfigMergeDriver.m +++ b/system7/Merge Driver/S7ConfigMergeDriver.m @@ -403,7 +403,7 @@ + (BOOL)readMergeResolutionFromEnvironmentVariable:(S7ConflictResolutionOption * + (S7ConflictResolutionOption)readConflictResolutionFromStdinWithAllowedOptions:(S7ConflictResolutionOption)allowedResolutions prompt:(NSString *)prompt { - const int BUF_LEN = 20; + #define BUF_LEN 20 char buf[BUF_LEN]; NSUInteger numberOfTries = 0; From 439452dae9328e2b7f4b7716c4d7e508daa7bd14 Mon Sep 17 00:00:00 2001 From: Roxane M Date: Mon, 29 Sep 2025 18:25:41 +0300 Subject: [PATCH 3/7] fixed "const vs variable array" ambiguity --- system7/Merge Driver/S7ConfigMergeDriver.m | 2 +- system7/Utils/S7Logging.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system7/Merge Driver/S7ConfigMergeDriver.m b/system7/Merge Driver/S7ConfigMergeDriver.m index 5ac7dc0..3e34b84 100644 --- a/system7/Merge Driver/S7ConfigMergeDriver.m +++ b/system7/Merge Driver/S7ConfigMergeDriver.m @@ -403,7 +403,7 @@ + (BOOL)readMergeResolutionFromEnvironmentVariable:(S7ConflictResolutionOption * + (S7ConflictResolutionOption)readConflictResolutionFromStdinWithAllowedOptions:(S7ConflictResolutionOption)allowedResolutions prompt:(NSString *)prompt { - const int BUF_LEN = 20; + #define BUF_LEN 20 char buf[BUF_LEN]; NSUInteger numberOfTries = 0; diff --git a/system7/Utils/S7Logging.m b/system7/Utils/S7Logging.m index 6cd664d..b94df83 100644 --- a/system7/Utils/S7Logging.m +++ b/system7/Utils/S7Logging.m @@ -38,7 +38,7 @@ BOOL canUseColorForOutputToFile(int fileno) { void logInfo(const char * __restrict format, ...) { va_list va_args; va_start(va_args, format); - NSString *const nsFormat = [[NSString alloc] initWithCString:format encoding:NSUTF8StringEncoding]; + NSString *const nsFormat = [NSString stringWithFormat:@"%@", [NSString stringWithUTF8String:format]]; NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; va_end(va_args); From a84cbbedf3b48e23cb2916b50fe6c90fda12d337 Mon Sep 17 00:00:00 2001 From: Roxane M Date: Tue, 30 Sep 2025 17:31:30 +0300 Subject: [PATCH 4/7] updated "format mismatch" fix to use `vsprintf` instead --- system7/Utils/S7Logging.m | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/system7/Utils/S7Logging.m b/system7/Utils/S7Logging.m index b94df83..1fc4eef 100644 --- a/system7/Utils/S7Logging.m +++ b/system7/Utils/S7Logging.m @@ -37,35 +37,37 @@ BOOL canUseColorForOutputToFile(int fileno) { void logInfo(const char * __restrict format, ...) { va_list va_args; + char message[256]; + va_start(va_args, format); - NSString *const nsFormat = [NSString stringWithFormat:@"%@", [NSString stringWithUTF8String:format]]; - NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; + vsprintf(message, format, va_args); va_end(va_args); + char *messagePointer = message; withTTYLockDo(^{ - fprintf(stdout, "%s", [message cStringUsingEncoding:NSUTF8StringEncoding]); + fprintf(stdout, "%s", messagePointer); }); } void logError(const char * __restrict format, ...) { va_list va_args; + char message[256]; + va_start(va_args, format); - NSString *const nsFormat = [NSString stringWithFormat:@"%@", [NSString stringWithUTF8String:format]]; - NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; + vsprintf(message, format, va_args); va_end(va_args); + char *messagePointer = message; withTTYLockDo(^{ if (canUseColorForOutputToFile(fileno(stderr))) { fprintf(stderr, "\033[31m" "%s" "\033[0m", - [message cStringUsingEncoding:NSUTF8StringEncoding]); + messagePointer); } else { - fprintf(stderr, - "ERROR: %s", - [message cStringUsingEncoding:NSUTF8StringEncoding]); + fprintf(stderr, "ERROR: %s", messagePointer); } }); } From f510ee59271baf43514bd7dbbd675fada8ddf089 Mon Sep 17 00:00:00 2001 From: Pavlo Shkrabliuk Date: Tue, 30 Sep 2025 22:54:18 +0300 Subject: [PATCH 5/7] fix build with Xcode 26 --- system7/Utils/S7Logging.m | 45 ++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/system7/Utils/S7Logging.m b/system7/Utils/S7Logging.m index 1fc4eef..5057a40 100644 --- a/system7/Utils/S7Logging.m +++ b/system7/Utils/S7Logging.m @@ -35,39 +35,50 @@ BOOL canUseColorForOutputToFile(int fileno) { return isatty(fileno) && term != NULL && strcasecmp(term, "dumb") != 0; } -void logInfo(const char * __restrict format, ...) { - va_list va_args; - char message[256]; +char *formatMessage(const char * __restrict format, va_list *args) { + va_list args_copy; + va_copy(args_copy, *args); + const int writtenSize = vsnprintf(nil, 0, format, args_copy); + va_end(args_copy); + + const size_t bufferSize = writtenSize + 1; + char *const buffer = malloc(bufferSize); + vsnprintf(buffer, bufferSize, format, *args); + + return buffer; +} - va_start(va_args, format); - vsprintf(message, format, va_args); - va_end(va_args); +void logInfo(const char * __restrict format, ...) { + va_list args; + va_start(args, format); + char *const message = formatMessage(format, &args); + va_end(args); - char *messagePointer = message; withTTYLockDo(^{ - fprintf(stdout, "%s", messagePointer); + fprintf(stdout, "%s", message); }); + + free(message); } void logError(const char * __restrict format, ...) { - va_list va_args; - char message[256]; + va_list args; + va_start(args, format); + char *const message = formatMessage(format, &args); + va_end(args); - va_start(va_args, format); - vsprintf(message, format, va_args); - va_end(va_args); - - char *messagePointer = message; withTTYLockDo(^{ if (canUseColorForOutputToFile(fileno(stderr))) { fprintf(stderr, "\033[31m" "%s" "\033[0m", - messagePointer); + message); } else { - fprintf(stderr, "ERROR: %s", messagePointer); + fprintf(stderr, "ERROR: %s", message); } }); + + free(message); } From 598e83d8eee6892a4fed6c403c8a18f3b0e41491 Mon Sep 17 00:00:00 2001 From: Pavlo Shkrabliuk Date: Tue, 30 Sep 2025 22:55:45 +0300 Subject: [PATCH 6/7] fix linker error when building unit tests target. XCTest is built for macOS >= 10.14. If someone need s7 on earlier versions, we'll ask them to tweak the setting on their machine --- system7.xcodeproj/project.pbxproj | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/system7.xcodeproj/project.pbxproj b/system7.xcodeproj/project.pbxproj index 39ef79b..69561d0 100644 --- a/system7.xcodeproj/project.pbxproj +++ b/system7.xcodeproj/project.pbxproj @@ -695,7 +695,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -754,7 +754,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-Wl,-fatal_warnings"; @@ -772,7 +772,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = system7/system7.pch; INSTALL_PATH = /bin; - MACOSX_DEPLOYMENT_TARGET = 10.14; PRODUCT_NAME = s7; }; name = Debug; @@ -786,7 +785,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = system7/system7.pch; INSTALL_PATH = /bin; - MACOSX_DEPLOYMENT_TARGET = 10.14; PRODUCT_NAME = s7; }; name = Release; @@ -800,7 +798,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "system7-tests/S7Tests.pch"; INFOPLIST_FILE = "system7-tests/Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = "com.readdle.system7-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -815,7 +812,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "system7-tests/S7Tests.pch"; INFOPLIST_FILE = "system7-tests/Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = "com.readdle.system7-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; }; From bc6816e57d4abaedd41fd515041fc95fcce7fdf0 Mon Sep 17 00:00:00 2001 From: Pavlo Shkrabliuk Date: Tue, 30 Sep 2025 22:57:33 +0300 Subject: [PATCH 7/7] fix static analyzer's findings in Xcode 26 --- system7/git/Git.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system7/git/Git.m b/system7/git/Git.m index 74ab815..57a3cab 100644 --- a/system7/git/Git.m +++ b/system7/git/Git.m @@ -983,6 +983,11 @@ - (BOOL)findPackedReferenceMatchingPattern:(NSString *)pattern reference:(NSStri BOOL found = NO; FILE *const referencesFile = fopen(referencesFilePath.fileSystemRepresentation, "r"); + if (NULL == referencesFile) { + logError("Failed to read %s\n", referencesFilePath.fileSystemRepresentation); + return NO; + } + const size_t bufferLength = 512; char *const buffer = calloc(bufferLength, sizeof(char));