os/path: Fix path_get_absolute_path for top-level paths

Close #2833
This commit is contained in:
Thiago de Arruda 2015-09-08 11:13:42 -03:00
parent 29b998be68
commit c708061a5a
2 changed files with 17 additions and 2 deletions

View File

@ -2089,8 +2089,15 @@ static int path_get_absolute_path(const char_u *fname, char_u *buf, int len, int
// expand it if forced or not an absolute path
if (force || !path_is_absolute_path(fname)) {
if ((p = vim_strrchr(fname, '/')) != NULL) {
STRNCPY(relative_directory, fname, p-fname);
relative_directory[p-fname] = NUL;
// relative to root
if (p == fname) {
// only one path component
relative_directory[0] = '/';
relative_directory[1] = NUL;
} else {
STRNCPY(relative_directory, fname, p-fname);
relative_directory[p-fname] = NUL;
}
end_of_path = (char *) (p + 1);
} else {
relative_directory[0] = NUL;

View File

@ -416,6 +416,14 @@ describe('more path function', function()
eq('unit-test-directory/test.file', (ffi.string(filename)))
eq(OK, result)
end)
it('works with directories that have one path component', function()
local force_expansion = 1
local filename = to_cstr('/tmp')
local result = path.vim_FullName(filename, buffer, len, force_expansion)
eq('/tmp', ffi.string(buffer))
eq(OK, result)
end)
end)
describe('path_fix_case', function()