safeInflate(Z, Data) -> Result
OTP 20.1
類型:
Z = zstream()
Data = iodata()
Result =
{continue, Output :: iolist()} |
{finished, Output :: iolist()} |
{need_dictionary,
Adler32 :: integer() >= 0,
Output :: iolist()}
就像inflate/2
,但一旦擴展超出實現定義的小閾值,就會返回。它在解壓縮不受信任的輸入時非常有用,這些輸入可能被惡意製作以擴展直到係統耗盡內存。
此函數返回 {continue | finished, Output}
,其中 Output 是在此調用中解壓縮的數據。如果需要,新的輸入可以在每次調用時排隊,並且一旦所有排隊的數據被解壓縮,該函數將返回{finished, Output}
。
此函數可能會引入一些輸出延遲(讀取輸入而不產生任何輸出)。
如果進一步解壓需要預設的字典,該函數返回一個need_dictionary
元組。看
inflateSetDictionary/2
)了解詳情。
例子:
walk(Compressed, Handler) ->
Z = zlib:open(),
zlib:inflateInit(Z),
loop(Z, Handler, zlib:safeInflate(Z, Compressed)),
zlib:inflateEnd(Z),
zlib:close(Z).
loop(Z, Handler, {continue, Output}) ->
Handler(Output),
loop(Z, Handler, zlib:safeInflate(Z, []));
loop(Z, Handler, {finished, Output}) ->
Handler(Output).
相關用法
- erlang safe_fixtable(Table, Fix)用法及代碼示例
- erlang safe_relative_path(Filename, Cwd)用法及代碼示例
- erlang sin用法及代碼示例
- erlang str用法及代碼示例
- erlang substr用法及代碼示例
- erlang sort用法及代碼示例
- erlang sublist用法及代碼示例
- erlang sum用法及代碼示例
- erlang split_binary用法及代碼示例
- erlang self用法及代碼示例
- erlang spawn用法及代碼示例
- erlang spawn on Node用法及代碼示例
- erlang spawnlink用法及代碼示例
- erlang select(Table, MatchSpec)用法及代碼示例
- erlang select_replace(Table, MatchSpec)用法及代碼示例
- erlang select_reverse(Continuation)用法及代碼示例
- erlang split(Filename)用法及代碼示例
- erlang setelement(Index, Tuple1, Value)用法及代碼示例
- erlang size(Item)用法及代碼示例
- erlang spawn(Module, Function, Args)用法及代碼示例
- erlang split_binary(Bin, Pos)用法及代碼示例
- erlang statistics(Item :: garbage_collection)用法及代碼示例
- erlang statistics(Item :: microstate_accounting)用法及代碼示例
- erlang statistics(Item :: reductions)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 safeInflate(Z, Data) -> Result。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。