• M
    qdict: Make qdict_flatten() shallow-clone-friendly · bf6e6a37
    Max Reitz 提交于
    In its current form, qdict_flatten() removes all entries from nested
    QDicts that are moved to the root QDict.  It is completely sufficient to
    remove all old entries from the root QDict, however.  If the nested
    dicts have a refcount of 1, this will automatically delete them, too.
    And if they have a greater refcount, we probably do not want to modify
    them in the first place.
    
    The latter observation means that it was currently (in general)
    impossible to qdict_flatten() a shallowly cloned dict because that would
    empty nested QDicts in the original dict as well.  This patch changes
    this, so you can now use qdict_flatten(qdict_shallow_clone(dict)) to get
    a flattened copy without disturbing the original.
    Signed-off-by: NMax Reitz <mreitz@redhat.com>
    Message-Id: <20180611205203.2624-7-mreitz@redhat.com>
    Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    bf6e6a37
block-qdict.c 21.9 KB