Fixes issue #445: catastrophic backtracking
This commit is contained in:
parent
4fb85ac19b
commit
e391c15341
|
@ -35,6 +35,8 @@ import android.text.style.ClickableSpan;
|
|||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.ImageSpan;
|
||||
import android.text.style.URLSpan;
|
||||
import android.util.Log;
|
||||
import android.util.Patterns;
|
||||
import android.view.View;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
|
@ -637,11 +639,16 @@ public class Status implements Parcelable{
|
|||
matcher = Patterns.WEB_URL.matcher(spannableString);
|
||||
else
|
||||
matcher = Helper.urlPattern.matcher(spannableString);*/
|
||||
matcher = Helper.urlPattern.matcher(spannableString);
|
||||
matcher = Patterns.WEB_URL.matcher(spannableString);
|
||||
while (matcher.find()){
|
||||
int matchStart = matcher.start(1);
|
||||
int matchEnd = matcher.end();
|
||||
Log.v(Helper.TAG,"matchStart: " + matchStart);
|
||||
Log.v(Helper.TAG,"matchEnd: " + matchEnd);
|
||||
|
||||
final String url = spannableString.toString().substring(matchStart, matchEnd);
|
||||
Log.v(Helper.TAG,"url: " + url);
|
||||
Log.v(Helper.TAG,"spannableString.toString().length(): " + spannableString.toString().length());
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
|
@ -659,11 +666,12 @@ public class Status implements Parcelable{
|
|||
},
|
||||
matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
Log.v(Helper.TAG,"spannableString.toString().length(): " + spannableString.toString().length());
|
||||
/* if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);*/
|
||||
}
|
||||
|
||||
Log.v(Helper.TAG,"mentions: " + mentions);
|
||||
//Deals with mention to make them clickable
|
||||
if( mentions != null && mentions.size() > 0 ) {
|
||||
//Looping through accounts which are mentioned
|
||||
|
@ -700,6 +708,7 @@ public class Status implements Parcelable{
|
|||
|
||||
}
|
||||
}
|
||||
Log.v(Helper.TAG,"tag: " + spannableString);
|
||||
matcher = Helper.hashtagPattern.matcher(spannableString);
|
||||
while (matcher.find()){
|
||||
int matchStart = matcher.start(1);
|
||||
|
@ -725,6 +734,7 @@ public class Status implements Parcelable{
|
|||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
Log.v(Helper.TAG,"spannableString: " + spannableString);
|
||||
return spannableString;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue