プロジェクト

全般

プロフィール

バグ #830

完了

User.new_ifnecessary がメインスレッド以外から呼ばれた時にクラッシュすることがある

toshi_a 初音 さんがほぼ8年前に追加. ほぼ8年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:

説明

#781 より

問題

source:core/user.rb では、 Retriever.new_ifnecessary を User.new_ifnecessary がオーバライドしていて、その中で User.findbyidname を呼んでいる。findbyidname はメインスレッドで呼ぶことはできないので、User.new_ifnecessaryがメインスレッドでは呼べないようになっている。

解決方法

User.new_ifnecessaryをやめる

そもそもRetriever.new_ifnecessaryは十分な機能をもっていて、Messageではオーバライドせずに使えている。こういうことをしているのはidnameでも引いてこれるようにしようとしているからだが、現状それは正しく動いていないので、他のRetriever同様、idのみでマッチングを行えば良い。

Retrieverの@storage相当のものをUserにもたせる

idnameで一意にUserのインスタンスが決まるのはUserだけなので、Retrieverがやっているのと全く同じようにインスタンス変数に保持する。


関連するチケット

関連している バグ #781: Userのインスタンスが生成されていないユーザのプロフィールを開けない終了toshi_a 初音2015-09-27操作

他の形式にエクスポート: Atom PDF