https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87116

            Bug ID: 87116
           Summary: Incorrect result of
                    std::filesystem::path::lexically_normal() for more
                    than 3 dot-dot elements
           Product: gcc
           Version: 8.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: benjamin.kollenda at rub dot de
  Target Milestone: ---

Created attachment 44611
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44611&action=edit
Example code with test inputs and expected outputs

Using std::filesystem::path::lexically_normal() with gcc 8.2.0 produces
incorrect results for paths with three or more dot-dot elements.
Example input:
comp0/comp1/comp2/comp3/../../../comp4/comp5/comp6/comp7
Expected output:
comp0/comp4/comp5/comp6/comp7
Actual output:
comp4/comp5/comp6/comp7

Using just 2 dot-dot elements works as expected:
Input:
comp0/comp1/comp2/comp3/../../comp4/comp5/comp6/comp7
Output:
comp0/comp1/comp4/comp5/comp6/comp7

This seems to be related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82777
but not fixed already. The testcase given in that bugreport works correctly on
my system.

GCC version is 8.2.0 on Arch Linux 64bit.
Commandline: g++ -std=c++17 filesystem.cpp -lstdc++fs -Wall -Wextra -o
filesystem

I attached a file containing test inputs and expected outputs.

Reply via email to