操作
バグ #1378
完了GdkPixbufのアサーションで落ちる
プラグイン名:
core/plugin/skin
クラッシュする:
はい
説明
Windows環境でmaster( 5747025b )のmikutterを起動したら下記エラーで落ちました。
GdkPixbuf-CRITICAL **: gdk_pixbuf_new_from_file_at_scale: assertion 'width > 0 || width == -1' failed
詳細なログは添付します。
起動時に source:core/plugin/skin/model/image.rb@5747025b#L35 が呼ばれた際に width もしくは height が 0 で呼ばれることにより、この後の処理のアサーションに失敗して落ちるといった挙動です。
ファイル
あひる 家鴨 さんが約5年前に更新
pixbuf
の呼び出し元の add_face_widget_ifn
を確認したところ #1338 で対応の入った scale
を通ると値が 0 になることがわかりました。どうやら自分の環境では
scale
の中で呼ばれている Gdk::Visual.system.screen.resolution
がデフォルト値の -1.0 (参考: GdkScreen resolution )を返すようで、その結果 val * Gdk::Visual.system.screen.resolution / 96
が -0.333333 となり to_i
で 0 に丸められています。(当該箇所: source:/core/mui/gtk_extension.rb@5747025b#L340)
下記対応をしてみようと思いますがいかがでしょうか。
resolution = Gdk::Visual.system.screen.resolution < 0 ? 96 : Gdk::Visual.system.screen.resolution
val * resolution / 96
操作