Hi all,Attached is a patch to fix the inpos array values for the case where a rule has an output length which is larger than its input length. For example, using UEBC, given the input "#", the output will be "_?". The array mapping from output to input (inpos) previously specified [0, 1], which is incorrect; there is no character at index 1 in the input. This patch fixes this to be the correct result; i.e. [0, 0].
Note that this was a regression introduced in 1.3.8. However, this is not simply a revert of the problematic code, as that code was necessary to fix a bug relating to 0 length input; e.g. computer braille prefixes and suffixes. This patch takes both cases into account.
Jamie -- James Teh Email: jamie@xxxxxxxxxxx WWW: http://www.jantrid.net/ MSN Messenger: jamie@xxxxxxxxxxx Jabber: jteh@xxxxxxxxxx Yahoo: jcs_teh
Index: liblouis/lou_translateString.c =================================================================== --- liblouis/lou_translateString.c (revision 39) +++ liblouis/lou_translateString.c (working copy) @@ -415,7 +415,7 @@ } for (k = inLength; k < outLength; k++) if (inputPositions != NULL) - inputPositions[dest + k] = src + inLength; + inputPositions[dest + k] = src + (inLength > 0 ? inLength - 1 : 0); } } dest += outLength;