tokens
.
Reasoning: The errors reported for `tokens` in `CodeRepeatedValues` (src/utils/huffman_encode_utils.c, lines 274, 283, 289, 294) indicated pointer arithmetic on a pointer assumed to be `__single`. Since `CodeRepeatedValues` is static and uses `tokens` as an iterator, its signature was changed to use `HuffmanTreeToken* __indexable` for both the parameter and return type. A similar static function, `CodeRepeatedZeros`, was also updated to use `__indexable` pointers. The caller, `VP8LCreateCompressedHuffmanTree`, passes a buffer `tokens` with size `max_tokens`. Its signature (in .c and .h files) was annotated to reflect this using `__counted_by(max_tokens)`. Because `__counted_by` requires the size parameter to be updated alongside the pointer if the pointer is modified, the implementation of `VP8LCreateCompressedHuffmanTree` was refactored. Instead of modifying the `tokens` parameter directly, a local iterator variable `current_token` was introduced and explicitly annotated as `__indexable` to ensure correct type propagation, especially when `WEBP_ASSUME_UNSAFE_INDEXABLE_ABI` is active. This local iterator is used for calls to `CodeRepeatedValues` and `CodeRepeatedZeros`. Bug: 432511821 Change-Id: I07fe553341a613a0ea4d5284817098c31f3aefeb
WebP Codec
__ __ ____ ____ ____
/ \\/ \/ _ \/ _ )/ _ \
\ / __/ _ \ __/
\__\__/\____/\_____/__/ ____ ___
/ _/ / \ \ / _ \/ _/
/ \_/ / / \ \ __/ \__
\____/____/\_____/_____/____/v1.6.0
WebP codec is a library to encode and decode images in WebP format. This package contains the library that can be used in other programs to add WebP support, as well as the command line tools 'cwebp' and 'dwebp' to compress and decompress images respectively.
See https://developers.google.com/speed/webp for details on the image format.
The latest source tree is available at https://chromium.googlesource.com/webm/libwebp
It is released under the same license as the WebM project. See https://www.webmproject.org/license/software/ or the "COPYING" file for details. An additional intellectual property rights grant can be found in the file PATENTS.
Building
See the building documentation.
Encoding and Decoding Tools
The examples/ directory contains tools to encode and decode images and animations, view information about WebP images, and more. See the tools documentation.
APIs
See the APIs documentation, and API usage examples in the
examples/
directory.
Bugs
Please report all bugs to the issue tracker. For security reports, select 'Security report' from the Template dropdown.
Patches welcome! See how to contribute.
Discuss
Email: webp-discuss@webmproject.org
Web: https://groups.google.com/a/webmproject.org/group/webp-discuss