Hi,

Just noticed that AdjustLineBreaks is broken if the Style parameter is
set to tlbsCR. (Tested with 3.2.2).
In fpc main this is fixed, in fixes_3_2 this still seems broken.

The fix in main was committed in 1c4151d8 (1 merge reques t!396 Fix,
shorten*, and speed up AdjustLineBreaks.( MR by Rika))
In the MR Rika comments: "presently, AdjustLineBreaks might just not
work, because it attempts to optimize the case of unchanged string by
looking only if the length has changed, which does not account for
possible changing lone #13 to #10."
It does not mention that (before the fix)
AdjustLineBreak(SomeStringWithCRLF, tlbsCR) changed the linebreaks to
LineFeed instead of CarriageReturn.

I would request that the changes from commit 1c4151d8 are merged to fixes_3_2.


For completeness I attached a sample program demonstrating the error.
Run with commandlineparameter --3.2.2 to see 3.2.2 behaviour
Run with commandlineparameter --fixes to see fixes_3_2 behaviour
Run with commandlineparameter --trunk to see fpc main (with commit
1c4151d8) behaviour
Run without commandline parameter to get the default behaviour of your
current compiler.

For both 3.2.2 and fixes code it outputs:

LF: OK: one[LF]two[LF]three

CR: Fail
  Expected: one[CR]two[CR]three
  Got     : one[LF]two[LF]three

CRLF: OK: one[CR][LF]two[CR][LF]three

LF to CR: Fail
  Expected: one[CR]two[CR]three
  Got     : one[LF]two[LF]three

LF->CR->CRLF: OK: one[CR][LF]two[CR][LF]three

CRLF->LF->CR: Fail
  Expected: one[CR]two[CR]three
  Got     : one[LF]two[LF]three

The code for main outputs:
LF: OK: one[LF]two[LF]three

CR: OK: one[CR]two[CR]three

CRLF: OK: one[CR][LF]two[CR][LF]three

LF to CR: OK: one[CR]two[CR]three

LF->CR->CRLF: OK: one[CR][LF]two[CR][LF]three

CRLF->LF->CR: OK: one[CR]two[CR]three

-- 
Bart

Attachment: test.pas
Description: Binary data

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to