Fix HtmlText exception with empty texts

This commit is contained in:
Wizou 2024-07-06 15:36:08 +02:00
parent b9299810b8
commit 88c05287be
3 changed files with 10 additions and 11 deletions

2
.github/dev.yml vendored
View file

@ -1,7 +1,7 @@
pr: none pr: none
trigger: [ master ] trigger: [ master ]
name: 4.1.2-dev.$(Rev:r) name: 4.1.3-dev.$(Rev:r)
pool: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest

3
.github/release.yml vendored
View file

@ -62,7 +62,6 @@ stages:
{ {
"status": "success", "status": "success",
"complete": true, "complete": true,
"message": "{ \"commitId\": \"$(Build.SourceVersion)\", \"buildNumber\": \"$(Build.BuildNumber)\", \"teamProjectName\": \"$(System.TeamProject)\" "message": "{ \"commitId\": \"$(Build.SourceVersion)\", \"buildNumber\": \"$(Build.BuildNumber)\", \"teamProjectName\": \"$(System.TeamProject)\"}"
}"
} }
waitForCompletion: 'false' waitForCompletion: 'false'

View file

@ -403,7 +403,7 @@ namespace TL
prevEntity.length = offset - prevEntity.offset; prevEntity.length = offset - prevEntity.offset;
} }
} }
else if (tag.StartsWith("a href=\"") && tag.EndsWith("\"")) else if (tag.StartsWith("a href=\"") && tag[^1] == '"')
{ {
tag = tag[8..^1]; tag = tag[8..^1];
if (tag.StartsWith("tg://user?id=") && long.TryParse(tag[13..], out var user_id) && users?.GetValueOrDefault(user_id)?.access_hash is long hash) if (tag.StartsWith("tg://user?id=") && long.TryParse(tag[13..], out var user_id) && users?.GetValueOrDefault(user_id)?.access_hash is long hash)
@ -411,7 +411,7 @@ namespace TL
else else
entities.Add(new MessageEntityTextUrl { offset = offset, length = -1, url = tag }); entities.Add(new MessageEntityTextUrl { offset = offset, length = -1, url = tag });
} }
else if (tag.StartsWith("code class=\"language-") && tag.EndsWith("\"")) else if (tag.StartsWith("code class=\"language-") && tag[^1] == '"')
{ {
if (entities.LastOrDefault(e => e.length == -1) is MessageEntityPre prevEntity) if (entities.LastOrDefault(e => e.length == -1) is MessageEntityPre prevEntity)
prevEntity.language = tag[21..^1]; prevEntity.language = tag[21..^1];
@ -439,13 +439,13 @@ namespace TL
internal static void FixUps(StringBuilder sb, List<MessageEntity> entities) internal static void FixUps(StringBuilder sb, List<MessageEntity> entities)
{ {
int truncate = 0; int newlen = sb.Length;
while (char.IsWhiteSpace(sb[^++truncate])); while (--newlen >= 0 && char.IsWhiteSpace(sb[newlen]));
if (truncate == 1) return; if (++newlen == sb.Length) return;
var len = sb.Length -= --truncate; sb.Length = newlen;
foreach (var entity in entities) foreach (var entity in entities)
if (entity.offset + entity.length > len) if (entity.offset + entity.length > newlen)
entity.length = len - entity.offset; entity.length = newlen - entity.offset;
} }
/// <summary>Converts the (plain text + entities) format used by Telegram messages into an <a href="https://core.telegram.org/bots/api/#html-style">HTML-formatted text</a></summary> /// <summary>Converts the (plain text + entities) format used by Telegram messages into an <a href="https://core.telegram.org/bots/api/#html-style">HTML-formatted text</a></summary>