如何安全地使用 g_variant_iter_loop 和通过 DBUS 接收的数据
How to safely use g_variant_iter_loop with data received via DBUS
我的堆栈跟踪看起来像这样
/usr/lib/libglib-2.0.so.0(g_variant_iter_loop+0xb4)
/usr/lib/libglib-2.0.so.0(g_variant_get_int32+0x1c)
/usr/lib/libglib-2.0.so.0(g_variant_type_is_subtype_of+0x3c)
它的代码如下:
while ((NULL != iterator) && (true == g_variant_iter_loop (iterator, "y", &extractedValue)))
{
// do something with extractedValue
}
使用 GVariant 通过 DBUS 接收数据。
也许我没有正确使用 glib API,但这只在 1% 的情况下失败。
我是做错了什么,还是遗漏了什么?
当只需要一个元素时,最好使用
if(iter != NULL) {
g_variant_iter_next (iterator, "u", &value);
}
我的堆栈跟踪看起来像这样
/usr/lib/libglib-2.0.so.0(g_variant_iter_loop+0xb4)
/usr/lib/libglib-2.0.so.0(g_variant_get_int32+0x1c)
/usr/lib/libglib-2.0.so.0(g_variant_type_is_subtype_of+0x3c)
它的代码如下:
while ((NULL != iterator) && (true == g_variant_iter_loop (iterator, "y", &extractedValue)))
{
// do something with extractedValue
}
使用 GVariant 通过 DBUS 接收数据。 也许我没有正确使用 glib API,但这只在 1% 的情况下失败。 我是做错了什么,还是遗漏了什么?
当只需要一个元素时,最好使用
if(iter != NULL) {
g_variant_iter_next (iterator, "u", &value);
}