Carsten Haitzler (The Rasterman) ha scritto:
> On Fri, 15 Feb 2008 15:56:12 +0100 "Cedric BAIL" <[EMAIL PROTECTED]> babbled:
>
> i found a wonderful nasty "bug"...
>
> 1. edje keeps the eet handle open.
> 2. edje uses the string dictionary
> 3. what happens if you delete the edj file edje is depending on and it then
> tries to make use of any o the strings from the dictionary... :) (hint: some
> signal around #11 :)).
>
> :)
>
> try this. use some theme X in e. have the source and recompile it (be nice -
> delete the original. recompiling the theme in-place is even worse as u screw
> with the file that eet has mmaped() in with string dictionary data):
>
> rm X.edj; edje_cc X.edc
>
> now go move your mouse around. move a window. bam. segv. :)
>
>
I also get a strange SIGABRT when saving edje file from the editor.
The error occur when i call eet_close(). inside the function
that crash is eet_dictionary_free().
Dunno what to do, didn't understand well what the dictionary do,
and how I have to manage the string inside the edje.
I need to investigate deeper :(
Also what exactly mean the new field Edje_File->free_strings ??
>> So here we go with the big dangerous patch that could break every thing :-)
>>
>> I did change the file format to this version finally :
>>
>> /* Version 3 */
>> /* NB: all int's are stored in network byte order on disk */
>> /* file format: */
>> int magic; /* magic number ie 0x1ee70f42 */
>> int num_directory_entries; /* number of directory entries to follow */
>> int num_dictionary_entries; /* number of dictionary entries to follow */
>> struct
>> {
>> int data_offset; /* bytes offset into file for data chunk */
>> int size; /* size of the data chunk */
>> int data_size; /* size of the (uncompressed) data chunk */
>> int name_offset; /* bytes offset into file for name string */
>> int name_size; /* length in bytes of the name field */
>> int flags; /* flags - for now 0 = uncompressed, 1 = compressed */
>> } directory[num_directory_entries];
>> struct
>> {
>> int hash;
>> int offset;
>> int size;
>> int prev;
>> int next;
>> } dictionary[num_dictionary_entries];
>> /* now start the string stream. */
>> /* and right after them the data stream. */
>>
>> All directory and dictionary entry are now aligned, this simplify a
>> lot the reading code. With this patch data decoding and encoding use
>> the dictionary if provided for string, double and float. As float and
>> double are now uniq string, the dictionary act also like a cache for
>> float and double string conversion. Old eet_flush is still present in
>> eet_lib for archeologist, but as we want compatibility with previous
>> eet file format previous eet_internal_read is still in use and work.
>>
>> I also provide a patch for edje, that should be applied with the eet
>> patch. It use the new eet API to prevent unecessary
>> evas_stringshare_add and switch edc source file to the new
>> EET_T_INLINED_STRING type (This string are compressed inside the
>> encoded data and not put inside the dictionary). Previous edje file
>> should still work with this update, but only new one will benefit from
>> this upgrade.
>>
>> --
>> Cedric BAIL
>>
>>
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel