tree schema BUGFIX check return val
diff --git a/src/tree_schema.c b/src/tree_schema.c
index 1dd9319..d7ac8d8 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -722,10 +722,12 @@
                 s = predicates;
 
                 /* print key predicate */
-                asprintf(&predicates, "%s[%s='%%s']", s ? s : "", key->name);
-                if (s) {
+                if (asprintf(&predicates, "%s[%s='%%s']", s ? s : "", key->name) == -1) {
                     free(s);
+                    free(path);
+                    return NULL;
                 }
+                free(s);
             }
             s = buffer ? strdup(buffer) : path;
             if (buffer) {
@@ -733,9 +735,7 @@
             } else {
                 len = asprintf(&path, "%s%s", predicates ? predicates : "", s ? s : "");
             }
-            if (predicates) {
-                free(predicates);
-            }
+            free(predicates);
             free(s);
 
             if (buffer && (buflen <= (size_t)len)) {