Timo,

Please always send emails about LibreDWG with a copy to [email protected].

So, you think the issue is realloc ing too frequently?

-Felipe

2010/2/22 Timo Lähde <[email protected]>

> Hello!
>
> I was testing testSVG.c with that example.dwg and it crash.
>
> Variable 'i' isn't the problem, but it's usage in those macros because of
> those too many increments of 'i' in that loop.
> It should happen only once in reallocation in my opinion. After that
> correction that part of code goes past that error.
>
> I have expanded all those macros to huge decode.c to debug that part of
> code.
>
> if (_obj->version == 1)
> {
>     do
>     {
>      _obj->sat_data = (char **)realloc(_obj->sat_data, (i + 1) *
> sizeof(char *));
>      _obj->block_size = bit_read_BL(dat);
>     if (3 >= 3)
>     {
>       fprintf((&__stderr), "block_size" ": " "%lu" "\n", _obj->block_size);
>     };
>     if (_obj->block_size > 0)
>     {
>      _obj->sat_data[i] = (char *)malloc(_obj->block_size * sizeof(char));
>     for (vcount = 0; vcount < _obj->block_size; vcount++)
>    {
>     _obj->sat_data[i][vcount] = bit_read_RC(dat);
>     if (3 >= 3)
>     {
>       fprintf((&__stderr), "sat_data[i++]" "[%d]: " "%2x" "\n", vcount,
> _obj->sat_data[i][vcount]);
>     }
>     }
>     };
>    i++;
>    } while (_obj->block_size);
> }
> else
>
> {
>     fprintf((&__stderr), "TODO: Implement parsing of ACIS file in entities
> 37,38 and 39.\n");
> }
>
> Timo
>
> 2010/2/22 Felipe Sanches <[email protected]>
>
> I agree that using this vriable is not the best thing to do. But decode3d
>> is not working at all yet. If you want to give it a try, feel free. But if
>> you do so, let us know what you're doing so that we dont duplicate efforts.
>>
>> juca
>>
>> PS: I forwarded your message to [email protected]
>>
>> 2010/2/21 Timo Lähde <[email protected]>
>>
>> Hello!
>>>
>>> Is this better way to do that, because of variable i :
>>>
>>> dwg.spec line 1244:
>>>
>>> if (FIELD_VALUE(version)==1)
>>>         {
>>>           do
>>>             {
>>>               //FIELD_VALUE(sat_data) = (BITCODE_RC**)
>>> realloc(FIELD_VALUE(sat_data), i * sizeof(BITCODE_RC*));
>>>              FIELD_VALUE(sat_data) = (BITCODE_RC**)
>>> realloc(FIELD_VALUE(sat_data), (i + 1) * sizeof(BITCODE_RC*));
>>>               FIELD_BL (block_size);
>>>               //FIELD_VECTOR (sat_data[i++], RC, block_size);
>>>               FIELD_VECTOR (sat_data[i], RC, block_size);
>>>               i++;
>>>             } while(FIELD_VALUE(block_size));
>>>         }
>>>       else
>>>         {
>>>           //TODO
>>>           fprintf(stderr, "TODO: Implement parsing of ACIS file in
>>> entities 37,38 and 39.\n");
>>>         }
>>>
>>> regards Timo VJ Lähde
>>>
>>>
>>>
>>>
>>>
>>>
>>
>

Reply via email to