Hi Daniel and everyone.
I am using gprolog 1.3.2 on Linux and I have this problem. In certain circumstances, number_codes is raising an exception when it should succeed. This only happens if: * number_codes has a string matching a valid number as the 2nd arg and a variable as the first
* number_codes is called in the exception handling clause of 'catch'
* the exception clause is executing because the goal of 'catch' contained a read_term which caused a parse error
* the parse error was due to an unmatched double quote.

This example produces the bug. It looks like the read_term is producing two errors, one of which hangs around and causes an exception in number_codes. The string of codes converts to sin("foo).


catch(read_from_codes([115,105,110,40,34,102,111,111,41,47], Term),
     Bug,
     number_codes(G, [51,49])).

note that if you replace number_codes with name, the example executes and catches the exception correctly, but G gets set to the atom '31' rather than the number 31, which I guess is because the implementation of name calls number_codes internally, and calls atom_codes when that raises an exception.
Hope you enjoy this challenge!
   --Jasper



_______________________________________________
Bug-prolog mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-prolog

Reply via email to