X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fdata.c;h=b1fbc49db6ddaaed164d6770c3567d400708b5e1;hp=193f49c94fbf68f1b67650dd7e04323b9126f1e2;hb=216e7ac3b97aed5a5d65c511dc061c78be90e79d;hpb=02e801eabbe26a129ea05e6723c94e10bb653dab diff --git a/src/data.c b/src/data.c index 193f49c..b1fbc49 100644 --- a/src/data.c +++ b/src/data.c @@ -35,7 +35,7 @@ struct psi_data *psi_data_ctor_with_dtors(struct psi_data *data, psi_error_cb error, unsigned flags) { if (!data) { - data = calloc(1, sizeof(*data)); + data = pecalloc(1, sizeof(*data), 1); } data->error = error; @@ -78,7 +78,7 @@ struct psi_data *psi_data_ctor(struct psi_data *data, psi_error_cb error, unsigned flags) { if (!data) { - data = calloc(1, sizeof(*data)); + data = pecalloc(1, sizeof(*data), 1); } data->error = error; @@ -121,7 +121,7 @@ struct psi_data *psi_data_ctor(struct psi_data *data, psi_error_cb error, struct psi_data *psi_data_exchange(struct psi_data *dest, struct psi_data *src) { if (!dest) { - dest = malloc(sizeof(*dest)); + dest = pemalloc(sizeof(*dest), 1); } *dest = *src; memset(src, 0, sizeof(*src)); @@ -160,16 +160,14 @@ void psi_data_dtor(struct psi_data *data) void psi_data_dump(int fd, struct psi_data *D) { - if (D->file.filename) { - size_t i = 0; - char *libname; + size_t i = 0; + char *libname; - dprintf(fd, "// filename=%s (%u errors)\n", D->file.filename, D->errors); - while (psi_plist_get(D->file.libnames, i++, &libname)) { - dprintf(fd, "lib \"%s\";\n", libname); - } - } else { - dprintf(fd, "// builtin predef\n"); + if (D->file.filename) { + dprintf(fd, "// filename=%s (%u errors)\n", D->file.filename->val, D->errors); + } + while (psi_plist_get(D->file.libnames, i++, &libname)) { + dprintf(fd, "lib \"%s\";\n", libname); } if (psi_plist_count(D->types)) { size_t i = 0; @@ -233,8 +231,14 @@ void psi_data_dump(int fd, struct psi_data *D) struct psi_decl *decl; while (psi_plist_get(D->decls, i++, &decl)) { + if (decl->extvar) { + dprintf(fd, "/* extvar accessor\n"); + } psi_decl_dump(fd, decl); dprintf(fd, "\n"); + if (decl->extvar) { + dprintf(fd, " extvar accessor */\n"); + } } dprintf(fd, "\n"); }