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 ------------------------------------------------------------------------------ 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
