lmntal / slim

slim LMNtal implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

io.print_charバグ

bluedragon1 opened this issue · comments

現象

  • 以下のプログラムを実行すると、セグフォが起きる。
io.print_char(io.stdout,1,out).

分析

  • io.print_charは以下のルールで適用される。
    • lib/io.lmnの63行目
io.print_char(Port, C, RetPort) :- unary(C), class(Port, "port") |
    '$callback'('cb_port_putc', Port, C, RetPort).
  • しかし、Cがstring型でないとセグフォを起こしてしまう。他のunary型のアトムには対応していなかった。
  • セグフォが起きないように修正。正しく出力されるようになった。
  • 現状io.print_charモジュールがio.printモジュールの機能を包含しているので、io.printにまとめても良いかも。