tests CHANGE parser_yang tests
diff --git a/src/parser_yang.c b/src/parser_yang.c
index 703a24e..6067f6e 100644
--- a/src/parser_yang.c
+++ b/src/parser_yang.c
@@ -103,7 +103,7 @@
  * @return LY_ERR values.
  */
 static LY_ERR
-buf_store_char(struct ly_ctx *ctx, const char *c, char **word_p, int *word_len, char **word_b, int *buf_len, int need_buf)
+buf_store_char(struct ly_ctx *ctx, const char *c, char **word_p, size_t *word_len, char **word_b, int *buf_len, int need_buf)
 {
     if (word_b && *word_b) {
         /* add another character into buffer */
@@ -259,7 +259,7 @@
  * @return LY_ERR values.
  */
 static LY_ERR
-read_qstring(struct ly_ctx *ctx, const char **data, enum yang_arg arg, char **word_p, char **word_b, int *word_len,
+read_qstring(struct ly_ctx *ctx, const char **data, enum yang_arg arg, char **word_p, char **word_b, size_t *word_len,
              int *buf_len, int indent)
 {
     /* string: 0 - string ended, 1 - string with ', 2 - string with ", 3 - string with " with last character \,
@@ -402,6 +402,7 @@
             case '+':
                 /* string continues */
                 string = 5;
+                need_buf = 1;
                 break;
             case ' ':
             case '\t':
@@ -458,7 +459,7 @@
  * @return LY_ERR values.
  */
 static LY_ERR
-get_string(struct ly_ctx *ctx, const char **data, enum yang_arg arg, char **word_p, char **word_b, int *word_len)
+get_string(struct ly_ctx *ctx, const char **data, enum yang_arg arg, char **word_p, char **word_b, size_t *word_len)
 {
     int buf_len = 0, slash = 0, indent = 0, prefix = 0;
     LY_ERR ret;
@@ -580,7 +581,7 @@
  * @return LY_ERR values.
  */
 static LY_ERR
-get_keyword(struct ly_ctx *ctx, const char **data, enum yang_keyword *kw, char **word_p, int *word_len)
+get_keyword(struct ly_ctx *ctx, const char **data, enum yang_keyword *kw, char **word_p, size_t *word_len)
 {
     LY_ERR ret;
     int prefix;
@@ -1053,7 +1054,7 @@
  * @return LY_ERR values.
  */
 static LY_ERR
-parse_ext_substmt(struct ly_ctx *ctx, const char **data, char *word, int word_len,
+parse_ext_substmt(struct ly_ctx *ctx, const char **data, char *word, size_t word_len,
                   struct lysp_stmt **child)
 {
     char *buf;
@@ -1116,7 +1117,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     struct lysp_ext_instance *e;
     enum yang_keyword kw;
 
@@ -1170,7 +1171,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*value) {
@@ -1221,7 +1222,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (mod->version) {
@@ -1278,7 +1279,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*belongsto) {
@@ -1338,7 +1339,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (rev[0]) {
@@ -1392,7 +1393,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_include *inc;
 
@@ -1449,7 +1450,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_import *imp;
 
@@ -1515,7 +1516,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_revision *rev;
 
@@ -1575,7 +1576,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int count, word_len;
+    size_t count, word_len;
     enum yang_keyword kw;
 
     /* allocate new pointer */
@@ -1626,7 +1627,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_CONFIG_MASK) {
@@ -1682,7 +1683,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_MAND_MASK) {
@@ -1738,7 +1739,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     /* get value */
@@ -1816,7 +1817,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_STATUS_MASK) {
@@ -1873,7 +1874,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_when *when;
 
@@ -1935,7 +1936,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     struct lysp_node *iter;
     struct lysp_node_anydata *any;
 
@@ -2024,7 +2025,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word, *ptr;
-    int word_len;
+    size_t word_len;
     long int num;
     unsigned long int unum;
     enum yang_keyword kw;
@@ -2052,7 +2053,7 @@
         unum = strtoul(word, &ptr, 10);
     }
     /* we have not parsed the whole argument */
-    if (ptr - word != word_len) {
+    if ((size_t)(ptr - word) != word_len) {
         LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INVAL, word_len, word, ly_stmt2str(val_kw));
         free(buf);
         return LY_EVALID;
@@ -2102,7 +2103,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_type_enum *enm;
 
@@ -2167,7 +2168,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word, *ptr;
-    int word_len;
+    size_t word_len;
     unsigned long int num;
     enum yang_keyword kw;
 
@@ -2189,7 +2190,7 @@
     errno = 0;
     num = strtoul(word, &ptr, 10);
     /* we have not parsed the whole argument */
-    if (ptr - word != word_len) {
+    if ((size_t)(ptr - word) != word_len) {
         LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INVAL, word_len, word, "fraction-digits");
         free(buf);
         return LY_EVALID;
@@ -2237,7 +2238,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_SET_REQINST) {
@@ -2292,7 +2293,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if ((*pat)[0] == 0x15) {
@@ -2353,7 +2354,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_restr *restr;
 
@@ -2422,7 +2423,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_type *nest_type;
 
@@ -2520,7 +2521,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_leaf *leaf;
@@ -2622,7 +2623,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word, *ptr;
-    int word_len;
+    size_t word_len;
     unsigned long int num;
     enum yang_keyword kw;
 
@@ -2646,7 +2647,7 @@
         errno = 0;
         num = strtoul(word, &ptr, 10);
         /* we have not parsed the whole argument */
-        if (ptr - word != word_len) {
+        if ((size_t)(ptr - word) != word_len) {
             LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INVAL, word_len, word, "max-elements");
             free(buf);
             return LY_EVALID;
@@ -2695,7 +2696,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word, *ptr;
-    int word_len;
+    size_t word_len;
     unsigned long int num;
     enum yang_keyword kw;
 
@@ -2718,7 +2719,7 @@
     errno = 0;
     num = strtoul(word, &ptr, 10);
     /* we have not parsed the whole argument */
-    if (ptr - word != word_len) {
+    if ((size_t)(ptr - word) != word_len) {
         LOGVAL(ctx, LY_VLOG_NONE, NULL, LY_VCODE_INVAL, word_len, word, "min-elements");
         free(buf);
         return LY_EVALID;
@@ -2764,7 +2765,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_ORDBY_MASK) {
@@ -2819,7 +2820,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_leaflist *llist;
@@ -2925,7 +2926,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_refine *rf;
 
@@ -3003,7 +3004,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_tpdf *tpdf;
 
@@ -3077,7 +3078,7 @@
 {
     LY_ERR ret = 0;
     char *word;
-    int word_len;
+    size_t word_len;
     struct lysp_action_inout *inout;
 
     if (*inout_p) {
@@ -3155,7 +3156,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_action *act;
 
@@ -3229,7 +3230,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_notif *notif;
 
@@ -3322,7 +3323,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_grp *grp;
 
@@ -3415,7 +3416,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_augment *aug;
 
@@ -3511,7 +3512,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_uses *uses;
@@ -3594,7 +3595,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_case *cas;
@@ -3693,7 +3694,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_choice *choic;
@@ -3801,7 +3802,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_container *cont;
@@ -3922,7 +3923,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_node *iter;
     struct lysp_node_list *list;
@@ -4056,7 +4057,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*flags & LYS_YINELEM_MASK) {
@@ -4113,7 +4114,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
 
     if (*argument) {
@@ -4166,7 +4167,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_ext *ex;
 
@@ -4226,7 +4227,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len, dev_mod;
+    size_t word_len, dev_mod;
     enum yang_keyword kw;
     struct lysp_deviate *iter, *d;
     struct lysp_deviate_add *d_add = NULL;
@@ -4442,7 +4443,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_deviation *dev;
 
@@ -4505,7 +4506,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_feature *feat;
 
@@ -4565,7 +4566,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw;
     struct lysp_ident *ident;
 
@@ -4628,7 +4629,7 @@
 {
     LY_ERR ret = 0;
     char *buf, *word;
-    int word_len;
+    size_t word_len;
     enum yang_keyword kw, prev_kw = 0;
     enum yang_module_stmt mod_stmt = Y_MOD_MODULE_HEADER;
 
@@ -4867,7 +4868,7 @@
 {
     LY_ERR ret = 0;
     char *word, *buf;
-    int word_len;
+    size_t word_len;
     const char *data_start;
     enum yang_keyword kw;
     struct lysp_module *mod;