osamu ogurisu
oguri****@gmail*****
2016年 8月 20日 (土) 18:01:51 JST
こんにちは、小栗栖です。 こちらに書くのは久しぶりです。 青空文庫のテキストからlatexのソースを出力するスクリプトを書いて遊んで いたのですが、先日の 0.9.5_pre2 で思いがけず、単純に長い string に rxmatch をかけるだけで string overrun during matching regexp になって しまいました。 例えば、 (define (make-str s n) ; 単に長いstringを準備したいだけです。 (with-output-to-string (lambda () (dotimes (i n) (display s))))) (define (test3 text) ; こっちが本題 (print (string-length text)) (rxmatch #/([0-9]+abc)?(.*){.*abc}/ text)) に対して次のような実行結果になってしまいました。 gosh> (gauche-version) "0.9.5_pre2" gosh> (test3 (make-str "a" 1256)) ; こちらは期待通り 1256 #f gosh> (test3 (make-str "a" 1257)) ; どうも長さ1256と1257が境のようです。 1257 *** ERROR: stack overrun during matching regexp #/([0-9]+abc)?(.*)\{.*abc\}/ Stack Trace: _______________________________________ 0 (eval expr env) at "/usr/local/share/gauche-0.9/0.9.5_pre2/lib/gauche/interactive.scm":282 gosh> こちらの環境は debian jessie で、 0.9.5-pre2 の make chack は全てpassしています。 $ uname -a Linux vivo 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02) x86_64 GNU/Linux $ gosh -V Gauche scheme shell, version 0.9.5_pre2 [utf-8,pthreads], x86_64-pc-linux-gnu なお、jessie の package の gauche-0.9.4 では期待通りの動作になります。 gosh> (gauche-version) "0.9.4" gosh> (test3 (make-str "a" 1257)) 1257 #f gosh> (test3 (make-str "a" 1258)) 1258 #f gosh> 私の "0.9.5_pre2" の make がおかしいのかもしれませんが、0.9.5 の準備中 と思いますので、まずは報告しておきます。 小栗栖 -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... Download