From 9e3dfa57a62aebacd9c14f0ca3b5cbcd3f84097f Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Fri, 13 Mar 2020 18:13:18 +0100
Subject: Fixed a little coding mistake in Itanium demangling.

---
 plugins/itanium/abi.c     | 2 +-
 tests/mangling/itanium.py | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/plugins/itanium/abi.c b/plugins/itanium/abi.c
index 2a9561f..34a2a01 100644
--- a/plugins/itanium/abi.c
+++ b/plugins/itanium/abi.c
@@ -1011,7 +1011,7 @@ static itanium_component *itd_template_prefix(GItaniumDemangling *context)
     else if (peek == 'T')
         result = itd_template_param(context);
 
-    if (is_itd_unqualified_name(context))
+    else if (is_itd_unqualified_name(context))
         result = itd_unqualified_name(context);
 
     /* Vérification : a-t-on empiété sur une règle <prefix> ? */
diff --git a/tests/mangling/itanium.py b/tests/mangling/itanium.py
index 7ff16c2..a1cc517 100644
--- a/tests/mangling/itanium.py
+++ b/tests/mangling/itanium.py
@@ -192,7 +192,7 @@ class TestItaniumMangling(ChrysalideTestCase):
         self.check_demangling(demangled, '??? zzz::aa<cccc::xxxx<float>>::ddddd(unsigned int)')
 
         demangled = demangler.decode_routine('_ZN3aaa3bbbINS_3cccIfEEE3dddEj')
-        self.check_demangling(demangled, '??? aaa::bbb<ccc<float>>::ddd(unsigned int)')
+        self.check_demangling(demangled, '??? aaa::bbb<aaa::ccc<float>>::ddd(unsigned int)')
 
 
     def testAndroidSystem(self):
@@ -207,7 +207,10 @@ class TestItaniumMangling(ChrysalideTestCase):
         self.check_demangling(demangled, '??? icu_55::Locale::operator=(const icu_55::Locale &)')
 
         demangled = demangler.decode_routine('_ZNSt3__16vectorIfNS_9allocatorIfEEE8__appendEj')
-        self.check_demangling(demangled, '??? std::__1::vector<float, allocator<float>>::__append(unsigned int)')
+        self.check_demangling(demangled, '??? std::__1::vector<float, std::__1::allocator<float>>::__append(unsigned int)')
 
         demangled = demangler.decode_routine('_ZN7android7String8C1EPKDsj')
         self.check_demangling(demangled, 'android::String8 *android::String8::String8(const char16_t *, unsigned int)')
+
+        demangled = demangler.decode_routine('_ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_')
+        self.check_demangling(demangled, 'std::__1::__tree_node_base<void *> *std::__1::__tree_next<std::__1::__tree_node_base<void *> *>(std::__1::__tree_node_base<void *> *)')
-- 
cgit v0.11.2-87-g4458