Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@tinyjin
Copy link
Member

@tinyjin tinyjin commented Oct 22, 2025

duplicate() uses strlen(), which stops at null bytes, causing embedded images to be truncated during slot override.

Changed to use memcpy() with actual size for binary data while keeping duplicate() for path strings.

Example

see: LottieExtension.cpp

//slot (image)
        {
            auto slot = std::unique_ptr<tvg::LottieAnimation>(tvg::LottieAnimation::gen());
            auto picture = slot->picture();
            if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/extensions/slot3.json"))) return false;

            // Replace this line to reproduce an isue or verify patch
            const char* slotJson = R"({"path_img":{"p":{"id":"image_0","w":500,"h":500,"u":"","p":"data:image/png;base64,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","e":1}}})";
            auto slotId = slot->gen(slotJson);
            if (!tvgexam::verify(slot->apply(slotId))) return false;

            sizing(picture, 3);
            canvas->push(picture);
            slots.push_back(std::move(slot));
        }

Before/After

Before(unchanged) After(overridden)
CleanShot 2025-10-22 at 17 09 18@2x CleanShot 2025-10-22 at 17 09 09@2x

@tinyjin tinyjin self-assigned this Oct 22, 2025
@Copilot Copilot AI review requested due to automatic review settings October 22, 2025 08:14
@tinyjin tinyjin requested a review from hermet as a code owner October 22, 2025 08:14
@tinyjin tinyjin added lottie Lottie animation borker Breakages during the main dev labels Oct 22, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in LottieBitmap deep copy operation where binary embedded image data was being truncated at null bytes due to using strlen()-based duplicate(). The fix uses memcpy() with actual size for binary data while preserving duplicate() for path strings.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

duplicate() uses strlen(), which stops at null bytes, causing embedded images
to be truncated during slot override.

Changed to use memcpy() with actual size for binary data while keeping
duplicate() for path strings.
@tinyjin tinyjin force-pushed the jinny/fix-embeded-image-slot branch from c619a78 to 8acf8c2 Compare October 22, 2025 12:42
Copy link
Member

@hermet hermet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think deep copy is bad idea for images here. Inefficient. Need a better solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

borker Breakages during the main dev lottie Lottie animation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants