Skip to content

Commit 1f45a87

Browse files
committed
diff BUGFIX only user-ordered meta reverse
1 parent fb48e81 commit 1f45a87

File tree

1 file changed

+8
-40
lines changed

1 file changed

+8
-40
lines changed

src/diff.c

Lines changed: 8 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3171,32 +3171,16 @@ lyd_diff_reverse_siblings_r(struct lyd_node *sibling, const struct lys_module *y
31713171
/* reverse create to delete */
31723172
LY_CHECK_GOTO(rc = lyd_diff_change_op(iter, LYD_DIFF_OP_DELETE), cleanup);
31733173

3174-
switch (iter->schema->nodetype) {
3175-
case LYS_LEAF:
3176-
case LYS_ANYXML:
3177-
case LYS_ANYDATA:
3178-
/* nothing to do */
3179-
break;
3180-
case LYS_LEAFLIST:
3181-
/* leaf-list create -> delete */
3174+
/* reverse user-ordered metadata */
3175+
if (lysc_is_userordered(iter->schema)) {
31823176
if (lysc_is_dup_inst_list(iter->schema)) {
31833177
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "position", "orig-position"), cleanup);
3184-
} else {
3178+
} else if (iter->schema->nodetype == LYS_LEAFLIST) {
31853179
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "value", "orig-value"), cleanup);
3186-
}
3187-
break;
3188-
case LYS_LIST:
3189-
/* list create -> delete */
3190-
if (lysc_is_dup_inst_list(iter->schema)) {
3191-
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "position", "orig-position"), cleanup);
31923180
} else {
3181+
assert(iter->schema->nodetype == LYS_LIST);
31933182
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "key", "orig-key"), cleanup);
31943183
}
3195-
break;
3196-
default:
3197-
LOGINT(LYD_CTX(iter));
3198-
rc = LY_EINT;
3199-
goto cleanup;
32003184
}
32013185

32023186
/* keep the operation for all the children, handled recursively */
@@ -3209,32 +3193,16 @@ lyd_diff_reverse_siblings_r(struct lyd_node *sibling, const struct lys_module *y
32093193
/* reverse delete to create */
32103194
LY_CHECK_GOTO(rc = lyd_diff_change_op(iter, LYD_DIFF_OP_CREATE), cleanup);
32113195

3212-
switch (iter->schema->nodetype) {
3213-
case LYS_LEAF:
3214-
case LYS_ANYXML:
3215-
case LYS_ANYDATA:
3216-
/* nothing to do */
3217-
break;
3218-
case LYS_LEAFLIST:
3219-
/* leaf-list delete -> create */
3196+
/* reverse user-ordered metadata */
3197+
if (lysc_is_userordered(iter->schema)) {
32203198
if (lysc_is_dup_inst_list(iter->schema)) {
32213199
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "orig-position", "position"), cleanup);
3222-
} else {
3200+
} else if (iter->schema->nodetype == LYS_LEAFLIST) {
32233201
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "orig-value", "value"), cleanup);
3224-
}
3225-
break;
3226-
case LYS_LIST:
3227-
/* list dlete -> create */
3228-
if (lysc_is_dup_inst_list(iter->schema)) {
3229-
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "orig-position", "position"), cleanup);
32303202
} else {
3203+
assert(iter->schema->nodetype == LYS_LIST);
32313204
LY_CHECK_GOTO(rc = lyd_diff_rename_meta(iter, yang_mod, "orig-key", "key"), cleanup);
32323205
}
3233-
break;
3234-
default:
3235-
LOGINT(LYD_CTX(iter));
3236-
rc = LY_EINT;
3237-
goto cleanup;
32383206
}
32393207

32403208
/* keep the operation for all the children, handled recursively */

0 commit comments

Comments
 (0)