[liblouis-liblouisxml] Re: Fix for extra space after 'changetable'

  • From: Paul Wood <paulw@xxxxxxxxxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Mon, 07 Jul 2014 16:00:13 +0100

Hi John,
We have looked at the code and found that the last 3 statements of change_table.c are:
 insert_translation (ud->main_braille_table);
  ud->main_braille_table = oldTable;
  pop_sem_stack ();

This last 'insert_translation' calls the code I referred to in my previous email and because the text being translated doesn't end with a space e.g. 'a <abbr>US</abbr> state' then the 'insert_translation' code ADDS a space. As the next bit to be translated starts with a space, we end up with two spaces. There is nothing else that would add the space in the next two lines. as far as we can tell What we suggest is that the code does a look forward and if the next character to be translated is a space then it doesn't add that space, but otherwise it does. Is this a workable solution?
Suggested  solution:

The line is in 'transcriber.c' and is in the function
'insert_translation (const char *table)'
It's replacing:
if (ud->translated_length > 0 && ud->translated_length <
      MAX_TRANS_LENGTH &&
      ud->translated_buffer[ud->translated_length - 1] > 32)
    {
    ud->translated_buffer[ud->translated_length++] = 32;

with:
if (ud->translated_length > 0 && ud->translated_length <

    MAX_TRANS_LENGTH &&
      ud->translated_buffer[ud->translated_length - 1] > 32 &&
            ud->text_buffer[0]!=32)
    {
    ud->translated_buffer[ud->translated_length++] = 32;

Thanks
Paul



On 30/06/2014 17:03, John J. Boyer wrote:
The space is added to keep things from running together. Your concern
about breaking something is justified, since this is the function that
handles all translations. The problem is  more likely to be in the
function that actually handles changetable.

John

On Mon, Jun 30, 2014 at 03:40:11PM +0100, Paul Wood wrote:
Hi Guys,
We have a university student volunteering with us for the summer! So
he thinks he has found the cause of the extra space after the
changetable opcode. I'm worried it will break something else and I
don't think we can run the checks as we are using windows.

The line is in 'transcriber.c' and is in the function
'insert_translation (const char *table)'
It's after:
if (ud->translated_length > 0 && ud->translated_length <
       MAX_TRANS_LENGTH &&
       ud->translated_buffer[ud->translated_length - 1] > 32)
     {

and is:
ud->translated_buffer[ud->translated_length++] = 32;

He tells me 32 is the ascii for space, so basically it's adding a space.
Please tell me if we can do the checks under windows and what else
we need to do ie. create a fork etc.
Thanks
Paul

--
Paulw.torchtrust signature

Paul Wood, Chief Technical Officer
*Torch Trust*
Torch House, Torch Way,
Market Harborough, Leics. LE16 9HL, UK
Direct Line: *+44(0)1858 438269*
Tel: *+44(0)1858 438260*, Fax: *+44(0)1858 438275*
Email: paulw@xxxxxxxxxxxxxx <mailto:paulw@xxxxxxxxxxxxxx>
Website: www.torchtrust.org <http://www.torchtrust.org/>

____________________________________________________

Chief Executive: Dr Gordon Temple
Charity No. 1095904

Privileged/Confidential Information may be contained in this message.
If you are not the intended recipient please destroy this message
and kindly notify the sender by reply email. The computer from which
this mail originates is equipped with virus screening software.
However Torch Trust cannot guarantee that the mail and its attachments
are free from virus infection.


--
Paulw.torchtrust signature

Paul Wood, Chief Technical Officer
*Torch Trust*
Torch House, Torch Way,
Market Harborough, Leics. LE16 9HL, UK
Direct Line: *+44(0)1858 438269*
Tel: *+44(0)1858 438260*, Fax: *+44(0)1858 438275*
Email: paulw@xxxxxxxxxxxxxx <mailto:paulw@xxxxxxxxxxxxxx>
Website: www.torchtrust.org <http://www.torchtrust.org/>

____________________________________________________

Chief Executive: Dr Gordon Temple
Charity No. 1095904

Privileged/Confidential Information may be contained in this message.
If you are not the intended recipient please destroy this message
and kindly notify the sender by reply email. The computer from which
this mail originates is equipped with virus screening software.
However Torch Trust cannot guarantee that the mail and its attachments
are free from virus infection.

Other related posts: