diff --git a/src/xml.c b/src/xml.c
index 1ce50c0..a65c1ba 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -413,18 +413,21 @@
             /* match opening and closing element tags */
             LY_CHECK_ERR_RET(
                     !context->elements.count,
-                    LOGVAL(ctx, LY_VLOG_LINE, &context->line, LYVE_SYNTAX, "Opening and closing elements tag missmatch (\"%.*s\").", *name_len, *name),
+                    LOGVAL(ctx, LY_VLOG_LINE, &context->line, LYVE_SYNTAX,
+                           "Opening and closing elements tag missmatch (\"%.*s\").", *name_len, *name),
                     LY_EVALID);
             e = (struct lyxml_elem*)context->elements.objs[context->elements.count - 1];
-            LY_CHECK_ERR_RET(e->prefix_len != *prefix_len || e->name_len != *name_len
-                             || (*prefix_len && strncmp(*prefix, e->prefix, e->prefix_len)) || strncmp(*name, e->name, e->name_len),
-                             LOGVAL(ctx, LY_VLOG_LINE, &context->line, LYVE_SYNTAX, "Opening and closing elements tag missmatch (\"%.*s\").", *name_len, *name),
-                             LY_EVALID);
+            if (e->prefix_len != *prefix_len || e->name_len != *name_len
+                    || (*prefix_len && strncmp(*prefix, e->prefix, e->prefix_len)) || strncmp(*name, e->name, e->name_len)) {
+                LOGVAL(ctx, LY_VLOG_LINE, &context->line, LYVE_SYNTAX,
+                       "Opening and closing elements tag missmatch (\"%.*s\").", *name_len, *name);
+                return LY_EVALID;
+            }
             /* opening and closing element tags matches, remove record from the opening tags list */
             free(e);
             --context->elements.count;
 
-            /* remove also the namespaces conneted with the element */
+            /* remove also the namespaces connected with the element */
             lyxml_ns_rm(context);
 
             /* do not return element information to announce closing element being currently processed */
@@ -484,7 +487,8 @@
 }
 
 LY_ERR
-lyxml_get_string(struct lyxml_context *context, const char **input, char **buffer, size_t *buffer_size, char **output, size_t *length, int *dynamic)
+lyxml_get_string(struct lyxml_context *context, const char **input, char **buffer, size_t *buffer_size, char **output,
+                 size_t *length, int *dynamic)
 {
 #define BUFSIZE 4096
 #define BUFSIZE_STEP 4096
@@ -718,11 +722,15 @@
                                    name_len, name),
                             error);
                     e = (struct lyxml_elem*)context->elements.objs[context->elements.count - 1];
-                    LY_CHECK_ERR_GOTO(e->prefix_len != prefix_len || e->name_len != name_len
-                                      || (prefix_len && strncmp(prefix, e->prefix, e->prefix_len)) || strncmp(name, e->name, e->name_len),
-                            free(e); --context->elements.count; LOGVAL(ctx, LY_VLOG_LINE, &fakecontext.line, LYVE_SYNTAX,
-                                            "Opening and closing elements tag missmatch (\"%.*s\").", name_len, name),
-                            error);
+                    if (e->prefix_len != prefix_len || e->name_len != name_len
+                            || (prefix_len && strncmp(prefix, e->prefix, e->prefix_len)) || strncmp(name, e->name, e->name_len)) {
+                        LOGVAL(ctx, LY_VLOG_LINE, &fakecontext.line, LYVE_SYNTAX,
+                               "Opening and closing elements tag missmatch (\"%.*s\", expected \"%.*s\").",
+                               name_len, name, e->name_len, e->name);
+                        free(e);
+                        --context->elements.count;
+                        goto error;
+                    }
                     /* opening and closing element tags matches */
                     /* return input back */
                     in = (*input);
