Opened 21 months ago

Last modified 21 months ago

#12904 new Bugs

canonical fails for relative symbolic link on NTFS

Reported by: Matthias@… Owned by: Beman Dawes
Milestone: To Be Determined Component: filesystem
Version: Boost 1.63.0 Severity: Problem
Keywords: filesystem canonical symbolic link symlink assert Cc:


I've an path inside a directory which is a symbolic link at an NTFS partition. The link points to a another directory in the same base directory.

boost throws

BOOST_ASSERT_MSG(result.is_absolute(), "canonical() implementation error; please report");

in operations.cpp, line 881

Here are more details: I call boost::filesystem::canonical}} with following ({{{const wchar_t*) parameter:


The current working directory is


which is a symlink to "x64.Debug"}} in the same base directory (in {{{"C:\\Projekte\\50_Workspace\\out").

Boost detects that the "x64" is a relative symbolic link and enters the "else" in line 868. But the created new_source looks strange:


In my opinion it should create either




for the next loop...

Change History (1)

comment:1 Changed 21 months ago by Matthias@…

Additional information

In operations.cpp, line 855 it declares link and creates it by calling detail::read_symlink(result, ec) result is "C:" in my case, ec is nullptr link will correctly be created as "x64.Debug" Then it calls result.remove_filename(); which leads to an empty result in my case and that's the reason why path new_source(result) also gives an empty new_source (in line 868 - which looks wrong to me...

Note: See TracTickets for help on using tickets.