Revision 4d5977ea

b/qobject/qdict.c
494 494
        delete = false;
495 495

  
496 496
        if (prefix) {
497
            qobject_incref(value);
498 497
            new_key = g_strdup_printf("%s.%s", prefix, entry->key);
499
            qdict_put_obj(target, new_key, value);
500
            delete = true;
501 498
        }
502 499

  
503 500
        if (qobject_type(value) == QTYPE_QDICT) {
501
            /* Entries of QDicts are processed recursively, the QDict object
502
             * itself disappears. */
504 503
            qdict_do_flatten(qobject_to_qdict(value), target,
505 504
                             new_key ? new_key : entry->key);
506 505
            delete = true;
506
        } else if (prefix) {
507
            /* All other objects are moved to the target unchanged. */
508
            qobject_incref(value);
509
            qdict_put_obj(target, new_key, value);
510
            delete = true;
507 511
        }
508 512

  
509 513
        g_free(new_key);

Also available in: Unified diff