Project

General

Profile

バグ #637

つぶやき中のURLのt.coが展開されないツイートがある

Added by Izumi Tsutsui over 6 years ago. Updated about 6 years ago.

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

Description

https://twitter.com/ph_toei/status/429203799404593152
のツイートを mikutter 0.2.2.1476 で表示すると

  • & が "& amp;" のままで表示される
  • URLの t.co が展開されない
  • URLの下線が引かれない(リンク自体はクリックできる)

という状態になってしまいます。

URL、&、ハッシュタグ等々のエンティティが含まれる、かつ
twitter公式の画像を含むツイートで同様の現象が起こることが
過去にもあったのですが、必ず起こるわけでもないようで、
いまいち法則がわかっていません。


Related issues

Related to バグ #655: URLにエスケープされるような文字が含まれていないツイートで、リンク処理が一切行われない終了toshi_a 初音Actions
#1

Updated by Izumi Tsutsui over 6 years ago

https://twitter.com/cgst/status/431336867309436928
でも再現しました。
ハッシュタグ + &記号 + twitter公式の添付画像 が条件?

#2

Updated by Satoshi Okuno over 6 years ago

寝たら明日が来ちゃう。日曜出勤なんてヤダー!な気分だったので調べてみました。

entity.rbの_generate_valueにてmessage.to_showに対してURLの正規表現をマッチさせてる処理があり、それが誤動作してる様です。

message.to_show.each_matches(rule[:regexp]){ |match, byte, pos|

なぜか展開後のURLと展開前のt.coのURLの両方がマッチしてる。

その2つのURLのrangeが一部かぶってて、cairo_markup_generator.rbのアンダーラインを引く処理で不正なhtmlが生成されている。

結果、Pangoがパース出来ず、各種装飾に失敗してる様です。

試しにmessage.to_showをmessage[:message]に変えたらアンダーラインは引かれる様に成りましたが、http+pic.twitter.com/〜+みたいにゴミが出ます。

一筋縄ではいかんですね。

#3

Updated by Izumi Tsutsui over 6 years ago

ハッシュタグなし、記号なしのこのツイート
https://twitter.com/ebijun/status/447493014550634496
でも再現するようです。
URLのエンティティと他のエンティティが同じ値になっていると変になる、とかでしょうか……

#4

Updated by Izumi Tsutsui about 6 years ago

ハッシュタグもメンションもないこのツイートでも起きるようです。
https://twitter.com/Swati_THN/status/457867734420705280
何か記号がエスケープできてないんでしょうか。

0.2.2 だけかもしれませんが……

#5

Updated by toshi_a 初音 about 6 years ago

  • Status changed from 新規 to レビュー待ち
  • Assignee set to Izumi Tsutsui

エスケープの都合上文字数がずれることがあって、「<」と「>」についてはその処理がありましたが、「&」はそれが処理されていなかったという問題がありました。

報告いただいた4件のうち、最初の2件に関しては正しく表示できるようになりました。

しかし、以下に関しては依然表示できません。

これは別の問題である可能性が高いので、 #655 に分けました。
解決したぶんについては、現在developのみに適用したため、そちらで確認してください。このあたりは0.2.2以降にいくつか書き換えている部分があってマージが面倒なので、バックポートしないかもしれません。

#6

Updated by toshi_a 初音 about 6 years ago

  • Related to バグ #655: URLにエスケープされるような文字が含まれていないツイートで、リンク処理が一切行われない added
#7

Updated by Izumi Tsutsui about 6 years ago

  • Status changed from レビュー待ち to 解決

例によって
NetBSD/i386 6.1.4 と pkgsrc-2014Q1 の
mikutter 0.2.2.1537
ruby 2.0.0p451
ruby-gnome2 2.2.0
という とか環境 ですが

core/entity.rb と core/mui/cairo_markup_generator.rb について
0.2.2.1537 に対して 6b0ad1c6 での差分を当てたところ、conflictもなく、
最初の2件のツイートは正しく t.co が展開されて
ハッシュタグも正しく表示されました。
https://twitter.com/tsutsuii/status/459948311642771456/photo/1
https://twitter.com/tsutsuii/status/459948736257331202/photo/1
ありがとうございます。

#8

Updated by toshi_a 初音 about 6 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF