Project

General

Profile

Actions

バグ #830

closed

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

Added by toshi_a 初音 almost 10 years ago. Updated almost 10 years ago.

Status:
終了
Priority:
通常
Target version:
プラグイン名:
ブランチ:
クラッシュする:

Description

#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がやっているのと全く同じようにインスタンス変数に保持する。


Related issues 1 (0 open1 closed)

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

Also available in: Atom PDF