Mosh に psyntaxを移植しよう その3

引越しのゴタゴタで中断していたのを再開。

前回までのあらすじ

どこかで SEGV する。

gdb で分かったこと

  • Object operator=(const Object& o) でオブジェクトがおかしい
  • apply のどこか。

分かった

(call-with-values (lambda () 1) (lambda (x) (+ x 1234)))

producer が (values ...) の結果でないものを返すときにうまく動いていないのが原因だった。
修正した。

今後に向けて

そもそも SEGV する原因は apply の引数の型チェックが甘かったのが原因。
改善した。

ちなみに psyntax はまだ動いていません。
続く。