On Fri, May 10, 2013 at 9:15 AM, Carsten Haitzler - Enlightenment Git <[email protected]> wrote: > raster pushed a commit to branch master. > > commit dc7775a1c6f7825e0b7d6b5de5d7781fc488a557 > Author: Carsten Haitzler (Rasterman) <[email protected]> > Date: Fri May 10 08:04:14 2013 +0900 > > multisense segv (free data that isnt malloced) fix... > --- > src/lib/edje/edje_multisense.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/src/lib/edje/edje_multisense.c b/src/lib/edje/edje_multisense.c > index 2aef629..8f9082d 100644 > --- a/src/lib/edje/edje_multisense.c > +++ b/src/lib/edje/edje_multisense.c > @@ -16,6 +16,7 @@ static Eina_Bool _play_finished(void *data EINA_UNUSED, Eo > *in, const Eo_Event_D > struct _edje_multisense_eet_data > { > sf_count_t offset, length; > + Eet_File *ef; > const char *data; > Ecore_Audio_Vio vio; > }; > @@ -73,7 +74,9 @@ static void _free(void *data) > { > struct _edje_multisense_eet_data *eet_data = data; > > - free(eet_data->data); > + if (eet_data->ef) eet_close(eet_data->ef); > +// don't free if eet_data->data comes from eet_read_direct > +// free(eet_data->data); > free(data); > } > #endif > @@ -111,7 +114,17 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, > const char *sample_name, c > > eet_data = calloc(1, sizeof(struct _edje_multisense_eet_data)); > > - eet_data->data = eet_read_direct(ed->file->ef, snd_id_str, (int > *)&eet_data->length); > + if (!eet_data) > + { > + ERR("Out of memory in allocating multisense sample info"); > + return EINA_FALSE; > + } > + // open eet file again to esnure we have reference because we > + // use eet_read_direct to avoid duplicating/copying into memory > + // by relying on a direct mmap, but this means we need to close > + // the eet file handle instead of freeing data > + eet_data->ef = eet_open(ed->path, EET_FILE_MODE_READ); > + eet_data->data = eet_read_direct(eet_data->ef, snd_id_str, (int > *)&eet_data->length); > > /* action->speed */
Why not using ed->file->ef here ? What is the point of opening that file again and risking getting a set of data that don't match what the rest of edje get ? -- Cedric BAIL ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. This 200-page book is written by three acclaimed leaders in the field. The early access version is available now. Download your free book today! http://p.sf.net/sfu/neotech_d2d_may _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
