diff --git a/rtl/inc/system.inc b/rtl/inc/system.inc index 19b57a9966..6e364b4535 100644 --- a/rtl/inc/system.inc +++ b/rtl/inc/system.inc @@ -1451,7 +1451,7 @@ begin p:=pchar(ps); unique:=true; end; - p[i]:=DirectorySeparator; + p[i-1]:=DirectorySeparator; end; end; @@ -1471,7 +1471,7 @@ begin p:=pwidechar(ps); unique:=true; end; - p[i]:=DirectorySeparator; + p[i-1]:=DirectorySeparator; end; end; diff --git a/tests/test/units/system/tdir.pp b/tests/test/units/system/tdir.pp index 0094d35fc1..3f1ba6134f 100644 --- a/tests/test/units/system/tdir.pp +++ b/tests/test/units/system/tdir.pp @@ -46,7 +46,36 @@ Begin test(IOResult, 0); WriteLn('Passed!'); - Write('removing directory ...'); + Write('making subdirectory /testdir3...'); + mkdir('testdir2/testdir3'); + test(IOResult, 0); + WriteLn('Passed!'); + +{$ifdef mswindows} + Write('making subdirectory \testdir4...'); + mkdir('testdir2\testdir4'); + test(IOResult, 0); + WriteLn('Passed!'); + + Write('removing directory /testdir3 ...'); + rmdir('testdir2\testdir3'); + test(IOResult, 0); + WriteLn('Passed!'); + + Write('removing directory \testdir4 ...'); + rmdir('testdir2/testdir4'); + test(IOResult, 0); + WriteLn('Passed!'); +{$else} + { Unix platforms do not translate \ into / in the system unit *dir functions, + regardless of the allowdirectoryseparators setting -> no \ testing } + Write('removing directory /testdir3 ...'); + rmdir('testdir2/testdir3'); + test(IOResult, 0); + WriteLn('Passed!'); +{$endif} + + Write('removing directory 3 ...'); rmdir('testdir2'); test(IOResult, 0); WriteLn('Passed!');