Browse Source

[Fix] Fix merging of the implicit arrays

tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
900d06b607
1 changed files with 10 additions and 4 deletions
  1. 10
    4
      contrib/libucl/ucl_parser.c

+ 10
- 4
contrib/libucl/ucl_parser.c View File

ucl_parser_process_object_element (struct ucl_parser *parser, ucl_object_t *nobj) ucl_parser_process_object_element (struct ucl_parser *parser, ucl_object_t *nobj)
{ {
ucl_hash_t *container; ucl_hash_t *container;
ucl_object_t *tobj;
ucl_object_t *tobj = NULL, *cur;
char errmsg[256]; char errmsg[256];


container = parser->stack->obj->value.ov; container = parser->stack->obj->value.ov;


tobj = __DECONST (ucl_object_t *, ucl_hash_search_obj (container, nobj));
DL_FOREACH (parser->stack->obj, cur) {
tobj = __DECONST (ucl_object_t *, ucl_hash_search_obj (cur->value.ov, nobj));

if (tobj != NULL) {
break;
}
}


if (tobj == NULL) { if (tobj == NULL) {
container = ucl_hash_insert_object (container, nobj, container = ucl_hash_insert_object (container, nobj,
parser->flags & UCL_PARSER_KEY_LOWERCASE); parser->flags & UCL_PARSER_KEY_LOWERCASE);
* - if a new object has bigger priority, then we overwrite an old one * - if a new object has bigger priority, then we overwrite an old one
* - if a new object has lower priority, then we ignore it * - if a new object has lower priority, then we ignore it
*/ */


/* Special case for inherited objects */ /* Special case for inherited objects */
if (tobj->flags & UCL_OBJECT_INHERITED) { if (tobj->flags & UCL_OBJECT_INHERITED) {
prinew = priold + 1; prinew = priold + 1;

Loading…
Cancel
Save