From 0ef0206417a144ac5ad6925605896affa7d905a2 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Fri, 12 Jul 2013 17:18:16 +0000 Subject: [PATCH] * fixed off-by-one error in the optimised rawbytestring/unicodestring dodirseparators() routines + added test (only testable under Windows) git-svn-id: branches/cpstrrtl@25089 - --- rtl/inc/system.inc | 4 ++-- tests/test/units/system/tdir.pp | 31 ++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) 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!');