Skip to content

[C] 'spRGB2Timeline_setFrame' Xcode reports "Bad access" #2880

@pbk20191

Description

@pbk20191

This extends '#2863'

I do actually find "bad_access" to the memory

this line cause the bad access

	frames[frame + COLOR2_B2] = b2;

In my understanding

static const int RGB2_ENTRIES = 7, COLOR2_R2 = 5, COLOR2_G2 = 6, COLOR2_B2 = 7;

should be like

static const int RGB2_ENTRIES = 7, COLOR2_R2 = 4, COLOR2_G2 = 5, COLOR2_B2 = 6;

because

each entry has 7 slot
0-> time
1 -> light-red
2 -> light-green
3 -> light-blue
4-> dark-red
5-> dark-green
6 -> dark-blue

7-> bad access

If i change the entries to

static const int RGB2_ENTRIES = 7, COLOR2_R2 = 4, COLOR2_G2 = 5, COLOR2_B2 = 6;

spine files is correctly parsed and renders expected result

You can actaully regenerate the issue using

https://github.com/pbk20191/spine-runtimes/tree/spinecios

with "Spine iOS example" project with "Spine C Example Target"

This only happens when spine file contains rgb2 not rgba2 so you can not check using "tank" and "coin" spine example.

And only occurs when using spine binary file
You can find It when you enable "Guard Malloc" option in xcode debugger

In Debug Build current status has no problem, But in Release Build with full optimization, RGB2 renders unexpected result

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions