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

Reply via email to