--- libelwix/src/json.c	2024/10/26 14:55:56	1.9.34.1
+++ libelwix/src/json.c	2024/10/27 03:57:34	1.9.34.3
@@ -3,7 +3,7 @@
 *  by Michael Pounov <misho@elwix.org>
 *
 * $Author: misho $
-* $Id: json.c,v 1.9.34.1 2024/10/26 14:55:56 misho Exp $
+* $Id: json.c,v 1.9.34.3 2024/10/27 03:57:34 misho Exp $
 *
 **************************************************************************
 The ELWIX and AITNET software is distributed under the following
@@ -12,7 +12,7 @@ terms:
 All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
 
-Copyright 2004 - 2019
+Copyright 2004 - 2024
 	by Michael Pounov <misho@elwix.org>.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -602,7 +602,7 @@ json_findbypos(u_long pos, jtok_t * __restrict toks, i
 	jtok_t *tok = NULL;
 	register int i;
 
-	if (toks)
+	if (!toks)
 		return NULL;
 
 	for (i = 1; i < toksnum; i++)
@@ -645,13 +645,21 @@ json_token2array(const char *jstr, jtok_t * __restrict
 	if (tok->tok_type == J_STRING || tok->tok_type == J_VALUE) {
 		v = ait_getVars(&arr, 0);
 		AIT_SET_STRSIZ(v, json_toklen(tok) + 1);
-		json_tokstrcpy(AIT_GET_STR(v), jstr, tok);
+		if (AIT_GET_STR(v)) {
+			json_tokstrcpy(AIT_GET_STR(v), jstr, tok);
+		} else {
+			ait_freeVar(&v);
+		}
 	} else if (tok->tok_type == J_ARRAY) {
 		for (i = 0, j = 1; i < tok->tok_size; i++) {
 			t = &tok[i + j];
 			v = ait_getVars(&arr, i);
 			AIT_SET_STRSIZ(v, json_toklen(t) + 1);
-			json_tokstrcpy(AIT_GET_STR(v), jstr, t);
+			if (AIT_GET_STR(v)) {
+				json_tokstrcpy(AIT_GET_STR(v), jstr, t);
+			} else {
+				ait_freeVar(&v);
+			}
 
 			/* if there we have array from objects should parse all object tokens */
 			while (i < tok->tok_size - 1 && tok->tok_idx != tok[i + j + 1].tok_parent)
@@ -662,7 +670,11 @@ json_token2array(const char *jstr, jtok_t * __restrict
 			t = &tok[i + 1];
 			v = ait_getVars(&arr, i);
 			AIT_SET_STRSIZ(v, json_toklen(t) + 1);
-			json_tokstrcpy(AIT_GET_STR(v), jstr, t);
+			if (AIT_GET_STR(v)) {
+				json_tokstrcpy(AIT_GET_STR(v), jstr, t);
+			} else {
+				ait_freeVar(&v);
+			}
 		}
 	} else {
 		elwix_SetErr(J_ERR_PARAM, "%s", jerrstr[J_ERR_PARAM]);
@@ -1144,7 +1156,7 @@ json_dump_yaml(FILE *f, const char *jstr, jtok_t *toks
 {
 	register int i, j, k;
 
-	if (!toksnum)
+	if (!toksnum || !toks)
 		return 0;
 
 	if (toks->tok_type == J_VALUE) {