【问题标题】:How to safely use g_variant_iter_loop with data received via DBUS如何安全地使用 g_variant_iter_loop 与通过 DBUS 接收的数据
【发布时间】:2015-02-02 14:48:02
【问题描述】:

我的堆栈跟踪如下所示

/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% 的情况下失败。 我做错了什么,还是我错过了什么?

【问题讨论】:

标签: c glib dbus


【解决方案1】:

当只需要一个元素时,最好使用

if(iter != NULL) {
    g_variant_iter_next (iterator, "u", &value);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2012-01-20
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多