Empty Arrays

Kevin Krammer kevin.krammer at gmx.at
Sun Jan 28 16:52:22 PST 2007


On Monday 29 January 2007 01:41, Thiago Macieira wrote:
> Kevin Krammer wrote:
> >Today I found a problem when retrieving a zero length string array.
> >
> >The dbus_message_iter_recurse() call does not indicate whether the entry
> >iterator points to a valid position and I haven't found a function which
> >would tell me (might have missed it though).
> >
> >Right now I recurse and then detect that dbus_message_iter_get_arg_type
> > is 0, i.e. directly checking this literal. In case this is the way to
> > do this, is there a an official define/typedef to check against?
>
> That is the correct way to detect it.

Ok, thanks.
I'll check for DBUS_TYPE_INVALID then

>
> the dbus_message_iter_has_next function is broken: it tells you if there's
> at least 2 items in the array, so it can't be used as loop conditionals.
>
> Generally, you can loop like this:
>
>   dbus_message_iter_recurse(&array_it, &element_it);
>   dbus_message_iter_next(&array_it);

I think this skips the first item

>   while (dbus_message_iter_get_arg_type(&element_It) == DBUS_TYPE_INVALID)

you mean != right? ;)

Cheers,
Kevin

-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


More information about the dbus mailing list