Excel_Reviserを64bitマシンで動くようにしてみた

新年一発目です。今年もよろしくお願いいたします。

Excel_ReviserというPHPでExcelを吐ける便利なライブラリがあるのですが、こいつが64bitで動かないので困る案件が発生したので解析してみました。

【主因】

PHP_INT_SIZEが4以外の場合が考慮されてない。

__get4()と$eocの生成に影響が出てます。

signed int4 で FFFFFFは-1ですが、signed int8 で FFFFFFは4294967295ですもんね…。

【対策】

  • $eocは-2にしたいようなので、-2をダイレクトに代入するように変更。
  • __get4()内では、PHP_INT_SIZEが4を超えており、かつ返却値が0x80000000以上の場合は0x100000000を引いた値を返すように変更。

でとりあえず動きました。まる。

カテゴリー: programming タグ: , パーマリンク