aboutsummaryrefslogtreecommitdiff
path: root/openmp/runtime/src/kmp_i18n.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'openmp/runtime/src/kmp_i18n.cpp')
-rw-r--r--openmp/runtime/src/kmp_i18n.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/openmp/runtime/src/kmp_i18n.cpp b/openmp/runtime/src/kmp_i18n.cpp
index a164aa1..f93e2b9 100644
--- a/openmp/runtime/src/kmp_i18n.cpp
+++ b/openmp/runtime/src/kmp_i18n.cpp
@@ -791,8 +791,19 @@ void __kmp_msg(kmp_msg_severity_t severity, kmp_msg_t message, va_list args) {
kmp_msg_t fmsg; // formatted message
kmp_str_buf_t buffer;
- if (severity != kmp_ms_fatal && __kmp_generate_warnings == kmp_warnings_off)
+ if (severity != kmp_ms_fatal && __kmp_generate_warnings == kmp_warnings_off) {
+ // Have to free all possible pre-allocated messages
+ // sent in through message and args
+ __kmp_str_free(&message.str);
+ for (;;) {
+ message = va_arg(args, kmp_msg_t);
+ if (message.type == kmp_mt_dummy && message.str == NULL) {
+ break;
+ }
+ __kmp_str_free(&message.str);
+ }
return; // no reason to form a string in order to not print it
+ }
__kmp_str_buf_init(&buffer);