mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-28 06:52:35 +01:00
Fix yet another crash in Translate.Processor - thx fdfg :)
This commit is contained in:
parent
55ed086b93
commit
a722a141da
@ -1301,13 +1301,37 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UrlEncodes a string without the requirement for System.Web
|
||||
/// UrlEncodes a string without the requirement for System.Web.
|
||||
/// Will crash if text length > 2000.
|
||||
/// </summary>
|
||||
public static string UrlEncode(string text)
|
||||
{
|
||||
return Uri.EscapeDataString(text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calculates the length if the text url encoded.
|
||||
/// </summary>
|
||||
public static int UrlEncodeLength(string text)
|
||||
{
|
||||
var urlEncodeLength = 0;
|
||||
foreach (var ch in text)
|
||||
{
|
||||
if (ch >= 'a' && ch <= 'z' ||
|
||||
ch >= 'A' && ch <= 'Z' ||
|
||||
ch >= '0' && ch <= '9')
|
||||
{
|
||||
urlEncodeLength++;
|
||||
}
|
||||
else
|
||||
{
|
||||
urlEncodeLength += 3;
|
||||
}
|
||||
}
|
||||
|
||||
return urlEncodeLength;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UrlDecodes a string without requiring System.Web
|
||||
/// </summary>
|
||||
|
@ -47,7 +47,7 @@ namespace Nikse.SubtitleEdit.Core.Translate.Processor
|
||||
{
|
||||
public readonly List<TTranslationBaseUnit> TranslationUnits = new List<TTranslationBaseUnit>();
|
||||
|
||||
public int TextSize => TranslationUnits.ConvertAll(e => Utilities.UrlEncode(e.Text).Length).Sum();
|
||||
public int TextSize => TranslationUnits.ConvertAll(e => Utilities.UrlEncodeLength(e.Text)).Sum();
|
||||
|
||||
public int ArrayLength => TranslationUnits.Count;
|
||||
}
|
||||
@ -103,7 +103,7 @@ namespace Nikse.SubtitleEdit.Core.Translate.Processor
|
||||
|
||||
foreach (var translationUnit in translationUnits)
|
||||
{
|
||||
if (currentChunk.TextSize + Utilities.UrlEncode(translationUnit.Text).Length > maxTextSize
|
||||
if (currentChunk.TextSize + Utilities.UrlEncodeLength(translationUnit.Text) > maxTextSize
|
||||
|| currentChunk.ArrayLength + 1 > maximumRequestArrayLength)
|
||||
{
|
||||
yield return currentChunk;
|
||||
|
Loading…
Reference in New Issue
Block a user