Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP 8.2と8.1で取り込まれたプルリクエストについて

PHP 8.2と8.1で取り込まれたプルリクエストについて

mb_strlen(“\x80\x81”, “CP932”); の\x80のカウントが修正されます。

- 今まで1とカウントされましたが、2とカウントされます。
- CP932とは、マイクロソフトが定義したShift_JISの亜種です。

てきめん tekimen

June 21, 2023
Tweet

More Decks by てきめん tekimen

Other Decks in Programming

Transcript

  1. 自己紹介 てきめん • https://tekitoh-memdhoi.info • @youkidearitai • https://www.youtube.com/use r/tekitohmrp •

    https://www.nicovideo.jp/user /2957748 • https://github.com/youkideari tai オレ
  2. 発見されたSJISバグの修正 • Fix entries in SJIS multi-byte character lengt h

    tables for bytes which do not start any valid 2-byte character #10230 – 先程のSJISでの挙動の違いから、1バイト目0x80が1バ イトとして処理されないとおかしいのでその修正 – SJISでは、この修正がなされたことを覚えていますで しょうか…?(今年1月でのPHP勉強会@東京での話)
  3. • 今回CP932で見つけ た、mblen_tableですが、なん とShift_JIS(SJIS)と違う場所で 管理してました – ext/mbstring/filters/ mbfilter_cp932.c – SJIS-macやSJIS-2004について

    は対処できてたのに抜けてしまっ た static const unsigned char mblen_table_sjis[] = { /* 0x80-0x9f,0xE0-0xFF */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; mblen_tableが違う場所で管理されてた
  4. どういう経緯で見つかったか • More refactoring/fixes/optimizations for CJK t ext handling via

    mbstring #11259 で見つかった(これ自体はPHP 8.3に反映される) – 散らばってたmbfilter_*.cを、mbfilter_cjk.cにまとめる というものとパフォーマンス改善などが含まれてたもの – ここでてきめんがCP932で修正されてることに気づく • じゃあ、これはPHP 8.2と8.1で修正しようねということになっ た
  5. プルリクエストを作った • てきめんがプルリクエストを作ることにした – で、つくったのがこちら: Fix mb_strlen is wrong length

    for CP932 when 0x8 0. #11335 – なんか、英語は自信ないです… – 次のPHP(8.2.8と8.1.21)でリリースされます
  6. 近況 • PHP 8.3.0 alpha1がリリースされました。 – alpha2は22日(明日)にリリース予定です。 – https://wiki.php.net/todo/php83 •

    最近ですとmb_detect_encoding周りでIssueが起票され ました 8.3 crash with mb_detect_encoding #11476 – 8.3は色々いじったので、暇あったら動かしてみてくれると嬉しい