[Xcb] _Problems_ in GSoC, 2011

vikash agrawal vikashagrawal1990 at gmail.com
Mon Jul 4 03:31:28 PDT 2011


On Mon, Jul 4, 2011 at 3:42 AM, vikash agrawal
<vikashagrawal1990 at gmail.com>wrote:

> Hello Everyone,
>
> Finally, first month of my GSoC has been over and it was surely full of
> up's and down's. So far I have understood the complex code generation
> involving various cases, complex types etc over the past. And I guess this
> was the perfect way to start to my project as this gave me a fair idea of
> any hacks that I try to bring in the code. [ Thanks Josh for suggesting me
> this way start my work on the project ]
>
> Also it has been long I am trying to patch a bug, I had several discussion
> with pharris ( I apologise for pestering you so much ) over the same. I am
> still studying c_client.py and a quick glance of it reveals
> '_c_serialize_helper_insert_  function', with context being sizeof, is
> responsible for xcb_str_sizeof in xproto.c. So I believe this might need
> some hacks.
> Also, if I am not wrong there is a problem with xcb_str_next with respect
> master and 1.7, but for this I have a very n00b and basic idea like if
> self.c_next_name == 'xcb_str_next': # and then necessary conditions of
> _c('whatever'); might solve the purpose. If this feels a way then can we
> specifically do the same for other buggy issues.
>
> Along with this, can there be a way in which I can find if the type is a
> string and then explicitly handle the padding,
> Please help me on the bug :(
>
> Also many a time I felt this weird issue, if I try to print any variable in
> c_client.py,the output came only for a couple of files like xkb.xml and one
> or two more, also whenever I tried to have _c(printf('blah blah'); ) I
> recvied hell lot of warnings
>
> Finally, if I make some hacks, how do I finally test the code, if things
> went right or not.
>
> Expecting a reply very soon :)
>
> And wish me luck, 1st assessment a week away and I am damn scared, this
> being my first GSoC and a project at this scale
>
> Love
>
> Vikash Agrawal
>
>
Ah, I forgot to mention, I compiled the attached utility and found* no
difference* is the output is master and tag 1.7. so what this utility
signifies ?

Also, when I see the function

int
xcb_str_sizeof (const void  *_buffer  /**< */)
{
    char *xcb_tmp = (char *)_buffer;
    const xcb_str_t *_aux = (xcb_str_t *)_buffer;
    unsigned int xcb_buffer_len = 0;
    unsigned int xcb_block_len = 0;
    unsigned int xcb_pad = 0;


    xcb_block_len += sizeof(xcb_str_t);
    xcb_tmp += xcb_block_len;
    /* name */
    *xcb_block_len += _aux->name_len * sizeof(char);* *
// What is this?*

    xcb_tmp += xcb_block_len;
    /* insert padding */
    *
   xcb_pad = -xcb_block_len & 3;
 // What is this?*

    xcb_buffer_len += xcb_block_len + xcb_pad;
    if (0 != xcb_pad) {
        xcb_tmp += xcb_pad;
        xcb_pad = 0;
    }
    xcb_block_len = 0;

    return xcb_buffer_len;
}

I don't think there is a logical error here

and glancing on functions

1) In master

void
xcb_str_next (xcb_str_iterator_t *i  /**< */)
{
    xcb_str_t *R = i->data;
    xcb_generic_iterator_t child;
*    child.data = (xcb_str_t *)(((char *)R) + xcb_str_sizeof(R));*
*// here as I see, xcb_str_sizeof(R) is explicitly called so, this might be
the root cause of the issue, and using if else
// constructs if we try to get the code given belo (1.7 ) what are the
issues that are likely to faced?
// I feel, we dont call the xcb_str_sizeof() explicitly then I think there
will issue in findinf the next offset for the iterator. so
// instead, can there be a way, in which we can fint that if its a string*,
*we call a function say xcb_str_next_string () which
// would be similar to one given below and in rest cases it would call
xcb_str_next*

 i->index = (char *) child.data - (char *) i->data;
    --i->rem;
    i->data = (xcb_str_t *) child.data;
}


2) in 1.7

void
xcb_str_next (xcb_str_iterator_t *i  /**< */)
{
    xcb_str_t *R = i->data;
    xcb_generic_iterator_t child = xcb_str_name_end(R);
    --i->rem;
    i->data = (xcb_str_t *) child.data;
    i->index = child.index;
}

Please reply to this and guide me if I going wrong or being just a n00b :(

Love

Vikash Agrawal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/xcb/attachments/20110704/6997c5fb/attachment.htm>


More information about the Xcb mailing list