[Bf-committers] 64-bit bug loading .blend files
containing scriptlinks
Ken Hughes
khughes at pacific.edu
Sat Nov 19 16:21:01 CET 2005
Ton Roosendaal wrote:
> Hi,
>
> this is struct ScriptLink:
>
> typedef struct ScriptLink {
> struct ID **scripts;
> short *flag;
>
> short actscript, totscript;
> int pad;
> } ScriptLink;
>
> It only has 2 pointers... further, Blender structs are stuffed with
> pointers, on reading a 32 bits file, the 64 bits Blender DNA should
> detect this and reallocate the struct with correct data in it. The only
> thing that could use testing is endianness and 64 bits. But I assume
> the 32 bits file you tried is from a linux intel system too?
Hi:
This is how the script link is written in writefile.c:
static void write_scriptlink(WriteData *wd, ScriptLink *slink)
{
writedata(wd, DATA, sizeof(void *)*slink->totscript, slink->scripts);
writedata(wd, DATA, sizeof(short)*slink->totscript, slink->flag);
}
the slink->script is written based on the structure, which is an array
of pointers. It reads this in again on load, but again assumes it's
an array of 64-bit pointers when it's used.
I tested on two linux intel systems.
Ken
> On 18 Nov, 2005, at 23:48, Ken Hughes wrote:
>
>> This is the first real 64-bit bug I've seen (which is good). A
>> .blend file from a 32-bit system which contains three scriptlinks is
>> loaded on my AMD64 system under linux. As read_struct() load the
>> file, it gets to the structure for the scriptlinks and allocates
>> memory for 3 pointers for a total of 12 bytes. Later, when
>> lib_link_scriptlink() is called, it goes through trying to relink the
>> objects, but thinks slink->scripts is pointer at 8-byte pointers.
>> The result is memory errors on exit (either from MEM_freen() or
>> glibc). For now I've verified using a hack in lib_link_scriptlink()
>> that correctly converting the 32-bit pointers to 64-bit pointers and
>> reallocating the proper storage fixes the problem.
>>
>> Any suggestions what to do? I'm not familiar with this part of the
>> source tree at all.
>>
>> Ken
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at projects.blender.org
>> http://projects.blender.org/mailman/listinfo/bf-committers
>>
>>
> ------------------------------------------------------------------------ --
> Ton Roosendaal Blender Foundation ton at blender.org http://www.blender.org
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers
>
More information about the Bf-committers
mailing list