Form Script Bütçeleri
Her form-script değerlendirmesi; CPU süresini, belleği, recursion derinliğini, ifade ve operasyon sayılarını ve bir script'in üretebileceği çıktıyı kapsayan katı bütçeler altında çalışır, böylece kontrolden çıkan bir hesaplama bir yeniden hesaplama geçişini asla kilitleyemez veya belleği tüketemez
THPDFScriptBudgets
THotPDF.FormScriptBudgets, EvaluateLoadedFieldJavaScript ve her yeniden hesaplama geçişi tarafından uygulanan bütçe kümesini tutar. THPDFScriptBudgets kaydı şu alanları sunar: MaxScriptLength, MaxStatements, MaxExpressionDepth, MaxOperations, MaxElapsedMilliseconds (wall-clock CPU sınırı), MaxValueBytes (tek değer üst sınırı), MaxTotalValueBytes (toplam bellek) ve MaxOutputBytes (üretilen çıktı üst sınırı); herhangi bir alanda sıfır, o sınırı kaldırır
var
Budgets: THPDFScriptBudgets;
begin
Budgets:= PDF.FormScriptBudgets;
Budgets.MaxElapsedMilliseconds:= 100;
Budgets.MaxTotalValueBytes:= 1024* 1024;
PDF.FormScriptBudgets:= Budgets;
end;
Uygulama ve telemetry
CPU kesmesi, operasyonlar ve değer baytları birikirken denetlenir; böylece script'ler bunu yalnızca tahsis yaparak aşamaz. Kümülatif bellek bütçesi, çok sayıda küçük değer ayırıp atan script'leri yakalar. Bir ihlal, değerlendirmeyi açıklayıcı bir ErrorText ile başarısız kılar ve sonuç kaydı, operasyon sayısının yanında ElapsedMilliseconds ve ValueBytes telemetry'sini bildirir
Varsayılan bütçeler tarihsel sınırları korur (8192 baytlık script'ler, 32 ifade, 32 derinlik, 1024 operasyon, değer başına 256 KB) ve 500 ms'lik bir CPU kesmesi, 4 MB'lık bir kümülatif bellek bütçesi ile 64 KB'lik bir çıktı üst sınırı ekler