mrb_valueをCの文字列に変換

mrb_funcallの件で、久しぶりにtwitterを使ったのですが、そのときにmrubyを始めてから
良く見ていたブログのkyabさんからも返信頂き、そこで次のような情報を頂きました。
 

@tkrworks RSTRING_PTR()はNULL終端じゃないこともあるらしいので、それをstrcmpしてるのがまずいかも? 知らなかった。。https://t.co/rmFPeKhBJc

— kyab (@kyab212) 2014, 2月 19

 
おっとっと、これは知りませんでした。リンクのMatzさんのツイートで
 

@bamchoh mrubyのRSTRING_PTR()はNULL終端でないことがあるからですね。RSTRING_LEN()と一緒に用法・用量に注意してお使いください。

— Yukihiro Matsumoto (@yukihiro_matz) 2014, 2月 5

 
と書かれています。これは知っておかないと後々ハマる原因になりそうです。とくに、OSC処理は
言ってしまえば通信処理というより文字列整形が主なので。
 
むやみに使わず、RSTRING_LEN()と組み合わせるか、mrb_str_to_cstr()を使って文字列を作り直す
のが良いようです。ふむふむ

コメントをどうぞ

Your email address will not be published. Required fields are marked *

*