Fix duplicate buffer problem, fix real_path beahviour
This commit is contained in:
parent
1788126f38
commit
baf219ee2f
|
@ -25,9 +25,11 @@ BufferManager::~BufferManager()
|
|||
Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags,
|
||||
StringView data, timespec fs_timestamp)
|
||||
{
|
||||
auto path = real_path(parse_filename(name));
|
||||
for (auto& buf : m_buffers)
|
||||
{
|
||||
if (buf->name() == name)
|
||||
if (buf->name() == name or
|
||||
(buf->flags() & Buffer::Flags::File and buf->name() == path))
|
||||
throw name_not_unique();
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,10 @@ String real_path(StringView filename)
|
|||
|
||||
auto it = find(existing.rbegin(), existing.rend(), '/');
|
||||
if (it == existing.rend())
|
||||
return filename.str();
|
||||
{
|
||||
char cwd[1024];
|
||||
return format("{}/{}", getcwd(cwd, 1024), filename);
|
||||
}
|
||||
|
||||
existing = StringView{existing.begin(), it.base()-1};
|
||||
non_existing = StringView{it.base(), filename.end()};
|
||||
|
|
Loading…
Reference in New Issue
Block a user