From 14c09425054fc53ed357a56c615d4aea15d96d9e Mon Sep 17 00:00:00 2001 From: Seth R Johnson Date: Thu, 10 Feb 2022 07:33:09 -0500 Subject: [PATCH] Preserve thread_local for brace-enclosed extern "C" --- Source/CParse/parser.y | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 2fd81ad9d..35415bb28 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -3133,15 +3133,22 @@ c_declaration : c_decl { Setattr($$,"name",$2); appendChild($$,n); while (n) { - if (!Equal(Getattr(n, "storage"), "typedef")) { + String *s = Getattr(n, "storage"); + if (s) { + if (Strstr(s, "thread_local")) { + Insert(s,0,"externc "); + } else if (!Equal(s, "typedef")) { + Setattr(n,"storage","externc"); + } + } else { Setattr(n,"storage","externc"); } n = nextSibling(n); } } else { - if (!Equal($2,"C++")) { + if (!Equal($2,"C++")) { Swig_warning(WARN_PARSE_UNDEFINED_EXTERN,cparse_file, cparse_line,"Unrecognized extern type \"%s\".\n", $2); - } + } $$ = new_node("extern"); Setattr($$,"name",$2); appendChild($$,firstChild($5));