On 20/09/16 16:50, Rob Arthan wrote:
> 
> I think this patch fixes it:
> 
> diff --git a/libpolyml/pexport.cpp b/libpolyml/pexport.cpp
> index b03b1da..a9ebd2e 100644
> --- a/libpolyml/pexport.cpp
> +++ b/libpolyml/pexport.cpp
> @@ -158,7 +158,7 @@ void PExport::printObject(PolyObject *p)
>              for (unsigned i = 0; i < ps->length; i++)
>              {
>                  char ch = ps->chars[i];
> -                fprintf(exportFile, "%02x", ch);
> +                fprintf(exportFile, "%02x", ch & 0xff);
>              }
>          }
>          else

It seems to work, but it is unclear to me why.

A few lines before there is the following text:

        /* See if the first word is a possible length.  The length
           cannot be one because single character strings are
           represented by the character. */
        /* This is not infallible but it seems to be good enough
           to detect the strings. */
        POLYUNSIGNED bytes = length * sizeof(PolyWord);
        if (length >= 2 && ...)

It looks like it requires further update.


        Makarius

_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to