View Issue Details

IDProjectCategoryView StatusLast Update
069SBPsoft.pcpublic2024-09-28 03:23
Reporterna6ko Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Summary069: 『スーパーモグラたたき!!︎ぽっくんモグラー』の dump でエラーが出た。
Description

‼(!が2つで1文字扱い)︎(詳細不明)の文字2つともファイル名に使えないらしい.
File.open("‼︎", "w") だけでエラーになる.

TagsNo tags attached.
Attach Tags

Activities

na6ko

2024-03-11 11:31

manager   ~0000142

unicode chara
0x203c ‼
0xfe0e ︎

0x203c は EXCLAMATION MARK, DOUBLE という名前でファイル名に使えそうで mruby レイヤの不備ではないだろうか.
0xfe0e は資料が少なく Variation Selector-15 という名前ではあるが詳しくないのでどう対処していいかわからない.

nes.xml 上では全米‼︎プロバスケットもこれに該当するがデータベースに取り込むときに全米!!プロバスケットになっていた.

na6ko

2024-03-11 15:23

manager   ~0000143

Windows Explorer では2つの文字ともファイル名として使えることを確認. cruby でも使えることを確認. mruby のバグだと思われる.

na6ko

2024-03-11 16:02

manager   ~0000144

https://github.com/mruby/mruby/blob/master/mrbgems/mruby-io/src/io.c
io_cloexec_open() 参照. open() は実際には io.h の _open() を利用しているので、文字コード依存が起きる.

na6ko

2024-03-11 17:01

manager   ~0000145

‼︎(1文字扱い)の文字は database/mame_xml_read.rb の UNF::Normalizer.normalize() によって !! (2文字)に変換されている.

na6ko

2024-03-11 17:18

manager   ~0000146

mruby での File.open でのファイル名を unicode を利用するように修正.
データベース上にある unicode chara 0xfe0e を削除.
master tree へソースとbin/mruby.dllを commit,
testers_firmware_20231208 へ bin/mruby.dll bin/romb.mrb を commit.
両方へ push .

na6ko

2024-03-12 10:36

manager   ~0000147

require が fopen() を使っていて同様の問題を確認. 該当部を _wfopen() に変更.
UTF-8 のファイル名を開く関数を source_core/textencoding_windows.c に統合.

na6ko

2024-09-28 03:23

manager   ~0000178

close をするために動作確認をしたところ require の path の処理が不適切で動作していなかった. textencoding.c に my_realpath() を追加し、ファイル名 に ascii 以外の文字が入っていても読めることを確認.
https://gitlab.com/na6ko/kawazu/-/commit/a2156259bce176b9b74c1feeb2ae6b300041fcac

close にせず経過をみる.

Issue History

Date Modified Username Field Change
2024-03-11 10:43 na6ko New Issue
2024-03-11 11:31 na6ko Note Added: 0000142
2024-03-11 15:23 na6ko Note Added: 0000143
2024-03-11 16:02 na6ko Note Added: 0000144
2024-03-11 17:01 na6ko Note Added: 0000145
2024-03-11 17:18 na6ko Status new => resolved
2024-03-11 17:18 na6ko Resolution open => fixed
2024-03-11 17:18 na6ko Note Added: 0000146
2024-03-12 10:36 na6ko Note Added: 0000147
2024-09-28 03:23 na6ko Note Added: 0000178