On Thu, 14 Apr 2011 19:53:00 +0200 (CEST) Vincent Torri <[email protected]> wrote:
> > > On Thu, 14 Apr 2011, Mike Blumenkrantz wrote: > > > On Thu, 14 Apr 2011 10:40:13 +0200 (CEST) > > Vincent Torri <[email protected]> wrote: > > > >> > >> > >> On Thu, 14 Apr 2011, Vincent Torri wrote: > >> > >>> > >>> > >>> On Thu, 14 Apr 2011, Enlightenment SVN wrote: > >>> > >>>> Log: > >>>> unrevert. this is not a mistake. > >> > >> with your commit, the code below fails silently, without it, you have the > >> error: > >> > >> > >> CRI<4620>: eina_list.c:880 eina_list_move() *** Eina Magic Check Failed > >> !!! > >> Input handle pointer is NULL ! > >> *** NAUGHTY PROGRAMMER!!! > >> *** SPANK SPANK SPANK!!! > >> *** Now go fix your code. Tut tut tut! > >> > >> > >> which is exactly what should happend. > >> > >> so explain me why you still want to check *to > >> > >> Vincent > >> > >> #include <stdio.h> > >> #include <Eina.h> > >> > >> int main() > >> { > >> Eina_List *l = NULL; > >> Eina_List *ll = NULL; > >> int i = 4; > >> Eina_Bool res; > >> > >> eina_init(); > >> > >> l = eina_list_append(l, &i); > >> res = eina_list_move(&ll, &l, &i); > >> printf("res : %d\n", res); > >> eina_shutdown(); > >> > >> return 0; > >> } > >> > >> > >>> > >>> explain me why it can segfault, then > >>> > >>> Vincent > >>> > >>>> > >>>> > >>>> Author: discomfitor > >>>> Date: 2011-04-14 00:42:04 -0700 (Thu, 14 Apr 2011) > >>>> New Revision: 58654 > >>>> Trac: http://trac.enlightenment.org/e/changeset/58654 > >>>> > >>>> Modified: > >>>> trunk/eina/src/lib/eina_list.c > >>>> > >>>> Modified: trunk/eina/src/lib/eina_list.c > >>>> =================================================================== > >>>> --- trunk/eina/src/lib/eina_list.c 2011-04-14 07:40:45 UTC (rev > >>>> 58653) +++ trunk/eina/src/lib/eina_list.c 2011-04-14 07:42:04 UTC > >>>> (rev 58654) @@ -894,7 +894,7 @@ > >>>> EINA_SAFETY_ON_NULL_RETURN_VAL(to, EINA_FALSE); > >>>> EINA_SAFETY_ON_NULL_RETURN_VAL(from, EINA_FALSE); > >>>> > >>>> - EINA_MAGIC_CHECK_LIST(*to, EINA_FALSE); > >>>> + if (*to) EINA_MAGIC_CHECK_LIST(*to, EINA_FALSE); > >>>> EINA_MAGIC_CHECK_LIST(*from, EINA_FALSE); > >>>> EINA_MAGIC_CHECK_LIST(data, EINA_FALSE); > >>>> > >>>> > >>>> > >>>> > > Here is a better test program: > > > > > > #include <stdio.h> > > #include <Eina.h> > > > > int main() > > { > > Eina_List *l = NULL; > > Eina_List *ll = NULL; > > char *s = strdup("test"); > > Eina_Bool res; > > > > eina_init(); > > > > l = eina_list_append(l, s); > > printf("l: %s\nll: %s\n", l ? (char*)l->data : "NULL", ll ? > > (char*)ll->data : "NULL"); printf("Moving from l to ll\n"); > > res = eina_list_move(&ll, &l, s); > > printf("l: %s\nll: %s\n", l ? (char*)l->data : "NULL", ll ? > > (char*)ll->data : "NULL"); eina_shutdown(); > > > > return 0; > > } > > > > Try it with my check, then without. I wrote the function, and this is the > > way it's supposed to work. > > so, basically, if 'to' is NULL, it's created (as eina_list_append is used > to append data to 'to'). Ok. > > Now, you did the commit for eina_list_move_list(), why didn't you do it > for eina_list_move() ? > > Vincent probably because it was getting late and I was tired :/ -- Mike Blumenkrantz Zentific: NULL pointer dereferences now 50% off! ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
