basic support for builtins
[m6w6/ext-psi] / src / types / assert_stmt.c
index ba86758d70254cc18c32b826d0b38e0b11cc93f3..e65efae05daff8454adf7afe46cb2047aae34803 100644 (file)
@@ -30,7 +30,7 @@
 
 struct psi_assert_stmt *psi_assert_stmt_init(enum psi_assert_kind kind, struct psi_num_exp *exp)
 {
-       struct psi_assert_stmt *stmt = calloc(1, sizeof(*stmt));
+       struct psi_assert_stmt *stmt = pecalloc(1, sizeof(*stmt), 1);
 
        stmt->kind = kind;
        stmt->exp = exp;
@@ -43,12 +43,10 @@ void psi_assert_stmt_free(struct psi_assert_stmt **stmt_ptr)
        if (*stmt_ptr) {
                struct psi_assert_stmt *stmt = *stmt_ptr;
 
+               *stmt_ptr = NULL;
                psi_num_exp_free(&stmt->exp);
-               if (stmt->token) {
-                       free(stmt->token);
-               }
+               psi_token_free(&stmt->token);
                free(stmt);
-               *stmt_ptr = NULL;
        }
 }
 
@@ -68,14 +66,14 @@ bool psi_assert_stmt_exec(struct psi_assert_stmt *stmt, struct psi_call_frame *f
        return chk.u8;
 }
 
-bool psi_assert_stmts_validate(struct psi_data *data, struct psi_impl *impl)
+bool psi_assert_stmts_validate(struct psi_data *data, struct psi_validate_scope *scope)
 {
        size_t i = 0;
        struct psi_assert_stmt *ass;
 
        /* we can have multiple assert stmts */
-       while (psi_plist_get(impl->stmts.ass, i++, &ass)) {
-               if (!psi_num_exp_validate(data, ass->exp, impl, NULL, NULL, NULL, NULL)) {
+       while (psi_plist_get(scope->impl->stmts.ass, i++, &ass)) {
+               if (!psi_num_exp_validate(data, ass->exp, scope)) {
                        return false;
                }
        }
@@ -93,7 +91,7 @@ char *psi_assert_stmt_message(struct psi_assert_stmt *stmt)
        dprintf(fd, "Failed asserting that ");
        psi_num_exp_dump(fd, stmt->exp);
        fstat(fd, &sb);
-       message = malloc(sb.st_size + 1);
+       message = pemalloc(sb.st_size + 1, 1);
        lseek(fd, 0, SEEK_SET);
        read(fd, message, sb.st_size);
        close(fd);