Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4504bba7 authored by Christopher Ferris's avatar Christopher Ferris
Browse files

Fix handling of _ZLXX.

Mangled names of the form _ZLXX, where XX is a number is now properly
demangled.

Test: Ran new unit tests.
Change-Id: I89fbb36d2294c46da428c75bd1a2f39f69ac4b43
parent 72076d1a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -196,6 +196,14 @@ TEST(DemangleTest, FunctionStartsWithNumber) {
  ASSERT_EQ("value(one, signed char)", demangler.Parse("_Z5value3onea"));
}

TEST(DemangleTest, FunctionStartsWithLPlusNumber) {
  Demangler demangler;

  ASSERT_EQ("value(char, int)", demangler.Parse("_ZL5valueci"));
  ASSERT_EQ("abcdefjklmn(signed char)", demangler.Parse("_ZL11abcdefjklmna"));
  ASSERT_EQ("value(one, signed char)", demangler.Parse("_ZL5value3onea"));
}

TEST(DemangleTest, StdTypes) {
  Demangler demangler;

+2 −0
Original line number Diff line number Diff line
@@ -698,6 +698,8 @@ const char* Demangler::FindFunctionName(const char* name) {

  if (std::isdigit(*name)) {
    name = GetStringFromLength(name, &function_name_);
  } else if (*name == 'L' && std::isdigit(name[1])) {
    name = GetStringFromLength(name + 1, &function_name_);
  } else {
    name = AppendOperatorString(name);
    function_name_ = cur_state_.str;