Loading...
--- dyld/dyld-433.5/interlinked-dylibs/Logging.cpp
+++ dyld/dyld-421.2/interlinked-dylibs/Logging.cpp
@@ -32,6 +32,7 @@
#include "Logging.h"
+#define MAX_LOG_STR_LEN (512)
//const char* kDispatchQueueLogNameKey = "kDispatchQueueLogNameKey";
const char* kDispatchWarningArrayKey = "kDispatchWarningArrayKey";
@@ -141,24 +142,27 @@
void queued_print(FILE* __restrict fd, const char* str)
{
+ const char* qstr = strdup(str);
+
dispatch_async(getLogQueue(), ^{
- (void)fprintf(fd, "%s", str);
- free((void*)str);
+ (void)fprintf(fd, "%s", qstr);
+ free((void*)qstr);
});
}
#define VLOG(header) \
va_list list; \
va_start(list, format); \
- char *temp, *temp2; \
- vasprintf(&temp, format, list); \
+ char temp[MAX_LOG_STR_LEN]; \
+ vsprintf(temp, format, list); \
auto ctx = getLoggingContext(); \
+ char temp2[MAX_LOG_STR_LEN]; \
if (ctx && !ctx->name().empty()) { \
- asprintf(&temp2, "[%s] %s%s\n", ctx->name().c_str(), header, temp); \
+ snprintf(temp2, MAX_LOG_STR_LEN, "[%s] %s%s\n", ctx->name().c_str(), header, \
+ temp); \
} else { \
- asprintf(&temp2, "%s%s\n", header, temp); \
+ snprintf(temp2, MAX_LOG_STR_LEN, "%s%s\n", header, temp); \
} \
- free(temp); \
queued_print(stderr, temp2); \
va_end(list);
@@ -184,13 +188,14 @@
va_list list;
va_start(list, format);
- char* blockTemp;
- vasprintf(&blockTemp, format, list);
+ char temp[MAX_LOG_STR_LEN];
+ vsprintf(temp, format, list);
+ char* blockTemp = strdup(temp);
auto ctx = getLoggingContext();
if (ctx) {
for (auto& target : ctx->targets().second) {
- ctx->targets().first->configuration(target.first).architecture(target.second).results.warnings.push_back(blockTemp);
+ ctx->targets().first->configurations[target.first].architectures[target.second].results.warnings.push_back(blockTemp);
}
}
@@ -213,7 +218,7 @@
if (ctx) {
// We are a work in a logging context, throw
- throw std::string(temp2);
+ throw std::string(temp);
} else {
// We are in general handing, let the loggging queue darain and exit
dispatch_sync(getLogQueue(), ^{