Skip to content

Commit 24e1039

Browse files
authored
Merge pull request #32045 from neikeq/fix-cannot-create-mono-log-file
Mono: Fix unable to create log file due to str_format bug
2 parents e9f49a6 + 3dcd7e5 commit 24e1039

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

modules/mono/mono_gd/gd_mono_log.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ void GDMonoLog::initialize() {
159159

160160
log_file = FileAccess::open(log_file_path, FileAccess::WRITE);
161161
if (!log_file) {
162-
ERR_PRINT("Mono: Cannot create log file.");
162+
ERR_PRINTS("Mono: Cannot create log file at: " + log_file_path);
163163
}
164164
}
165165

modules/mono/utils/string_utils.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,22 +208,26 @@ String str_format(const char *p_format, ...) {
208208
#endif
209209

210210
#if defined(MINGW_ENABLED) || defined(_MSC_VER) && _MSC_VER < 1900
211-
#define vsnprintf(m_buffer, m_count, m_format, m_argptr) vsnprintf_s(m_buffer, m_count, _TRUNCATE, m_format, m_argptr)
211+
#define gd_vsnprintf(m_buffer, m_count, m_format, m_args_copy) vsnprintf_s(m_buffer, m_count, _TRUNCATE, m_format, m_args_copy)
212+
#define gd_vscprintf(m_format, m_args_copy) _vscprintf(m_format, m_args_copy)
213+
#else
214+
#define gd_vsnprintf(m_buffer, m_count, m_format, m_args_copy) vsnprintf(m_buffer, m_count, m_format, m_args_copy)
215+
#define gd_vscprintf(m_format, m_args_copy) vsnprintf(NULL, 0, p_format, m_args_copy)
212216
#endif
213217

214218
String str_format(const char *p_format, va_list p_list) {
215219
va_list list;
216220

217221
va_copy(list, p_list);
218-
int len = vsnprintf(NULL, 0, p_format, list);
222+
int len = gd_vscprintf(p_format, list);
219223
va_end(list);
220224

221225
len += 1; // for the trailing '/0'
222226

223227
char *buffer(memnew_arr(char, len));
224228

225229
va_copy(list, p_list);
226-
vsnprintf(buffer, len, p_format, list);
230+
gd_vsnprintf(buffer, len, p_format, list);
227231
va_end(list);
228232

229233
String res(buffer);

0 commit comments

Comments
 (0)