pe*alloc
authorMichael Wallner <mike@php.net>
Fri, 2 Nov 2018 09:20:38 +0000 (10:20 +0100)
committerMichael Wallner <mike@php.net>
Fri, 2 Nov 2018 09:20:38 +0000 (10:20 +0100)
47 files changed:
src/context.c
src/cpp.c
src/cpp_tokiter.c
src/data.c
src/libffi.c
src/marshal.c
src/parser.c
src/parser.re
src/plist.c
src/token.c
src/types.h
src/types/assert_stmt.c
src/types/const.c
src/types/cpp_exp.c
src/types/cpp_macro_call.c
src/types/cpp_macro_decl.c
src/types/decl.c
src/types/decl_abi.c
src/types/decl_arg.c
src/types/decl_enum.c
src/types/decl_enum_item.c
src/types/decl_extvar.c
src/types/decl_struct.c
src/types/decl_type.c
src/types/decl_union.c
src/types/decl_var.c
src/types/free_exp.c
src/types/free_stmt.c
src/types/impl.c
src/types/impl_arg.c
src/types/impl_def_val.c
src/types/impl_func.c
src/types/impl_type.c
src/types/impl_var.c
src/types/layout.c
src/types/let_callback.c
src/types/let_calloc.c
src/types/let_exp.c
src/types/let_func.c
src/types/let_stmt.c
src/types/num_exp.c
src/types/number.c
src/types/return_exp.c
src/types/return_stmt.c
src/types/set_exp.c
src/types/set_func.c
src/types/set_stmt.c

index 22fd915..1d5e230 100644 (file)
@@ -113,7 +113,7 @@ PHP_MSHUTDOWN_FUNCTION(psi_context)
 struct psi_context *psi_context_init(struct psi_context *C, struct psi_context_ops *ops, psi_error_cb error, unsigned flags)
 {
        if (!C) {
-               C = malloc(sizeof(*C));
+               C = pemalloc(sizeof(*C), 1);
        }
        memset(C, 0, sizeof(*C));
 
@@ -144,7 +144,7 @@ static bool psi_context_add(struct psi_context *C, struct psi_parser *P)
        struct psi_data *D;
        struct psi_validate_scope scope = {0};
 
-       C->data = realloc(C->data, (C->count + 1) * sizeof(*C->data));
+       C->data = safe_perealloc(C->data, (C->count + 1), sizeof(*C->data), 0, 1);
        D = psi_data_exchange(&C->data[C->count++], PSI_DATA(P));
 
        psi_validate_scope_ctor(&scope);
index 0f048b4..e01c3e6 100644 (file)
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -98,7 +98,7 @@ static void free_cpp_def(zval *p)
 
 struct psi_cpp *psi_cpp_init(struct psi_parser *P)
 {
-       struct psi_cpp *cpp = calloc(1, sizeof(*cpp));
+       struct psi_cpp *cpp = pecalloc(1, sizeof(*cpp), 1);
 
        cpp->parser = P;
        zend_hash_init(&cpp->once, 0, NULL, NULL, 1);
index f2b468e..5611d3a 100644 (file)
@@ -290,7 +290,7 @@ static size_t psi_cpp_tokiter_expand_tokens(struct psi_cpp *cpp,
        if (tokens && psi_plist_count(tokens)) {
                size_t i = 0, n = 0;
                bool stringify = false, paste = false;
-               struct psi_token *tok, **exp_tokens = calloc(psi_plist_count(tokens), sizeof(*exp_tokens));
+               struct psi_token *tok, **exp_tokens = pecalloc(psi_plist_count(tokens), sizeof(*exp_tokens), 1);
 
                while (psi_plist_get(tokens, i++, &tok)) {
                        struct psi_token *new_tok;
@@ -367,7 +367,7 @@ static struct psi_plist **psi_cpp_tokiter_read_call_tokens(
                struct psi_cpp *cpp, size_t arg_count)
 {
        size_t arg_index = 0, lparens = 1, rparens = 0;
-       struct psi_plist **arg_tokens = calloc(arg_count, sizeof(*arg_tokens));
+       struct psi_plist **arg_tokens = pecalloc(arg_count, sizeof(*arg_tokens), 1);
        struct psi_plist *free_tokens = psi_plist_init((psi_plist_dtor) psi_token_free);
        struct psi_token *tok;
 
index f9e0e5f..b1fbc49 100644 (file)
@@ -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));
index fbd79b0..30210cf 100644 (file)
@@ -218,7 +218,7 @@ static size_t psi_ffi_struct_type_pad(ffi_type **els, size_t padding) {
        size_t i;
 
        for (i = 0; i < padding; ++i) {
-               ffi_type *pad = malloc(sizeof(*pad));
+               ffi_type *pad = pemalloc(sizeof(*pad), 1);
 
                memcpy(pad, &ffi_type_schar, sizeof(*pad));
                *els++ = pad;
@@ -240,7 +240,7 @@ static inline void psi_ffi_struct_type_element(
                struct psi_ffi_struct_element_storage *s, struct psi_decl_arg *darg,
                ffi_type *darg_type) {
 
-       ffi_type *type, **tmp;
+       ffi_type *type;
        size_t padding;
 
        if (darg->layout->pos == s->last_arg_pos) {
@@ -249,7 +249,7 @@ static inline void psi_ffi_struct_type_element(
        }
        s->last_arg_pos = darg->layout->pos;
 
-       type = malloc(sizeof(*type));
+       type = pemalloc(sizeof(*type), 1);
        *type = *darg_type;
 
        if (type->alignment > s->max_align) {
@@ -260,13 +260,7 @@ static inline void psi_ffi_struct_type_element(
        if ((padding = psi_offset_padding(darg->layout->pos - s->offset, type->alignment))) {
                if (s->nels + padding + 1 > s->argc) {
                        s->argc += padding;
-                       tmp = realloc(s->els, (s->argc + 1) * sizeof(*s->els));
-                       if (tmp) {
-                               s->els = tmp;
-                       } else {
-                               free(s->els);
-                               abort();
-                       }
+                       s->els = safe_perealloc(s->els, (s->argc + 1), sizeof(*s->els), 0, 1);
                        s->els[s->argc] = NULL;
                }
                psi_ffi_struct_type_pad(&s->els[s->nels], padding);
@@ -281,13 +275,12 @@ static inline void psi_ffi_struct_type_element(
 
 static ffi_type **psi_ffi_struct_type_elements(struct psi_decl_struct *strct) {
        size_t i = 0;
-       ffi_type **tmp;
        struct psi_decl_arg *darg;
        struct psi_ffi_struct_element_storage s = {0};
 
        s.last_arg_pos = -1;
        s.argc = psi_plist_count(strct->args);
-       s.els = calloc(s.argc + 1, sizeof(*s.els));
+       s.els = pecalloc(s.argc + 1, sizeof(*s.els), 1);
 
        while (psi_plist_get(strct->args, i++, &darg)) {
                psi_ffi_struct_type_element(&s, darg, psi_ffi_decl_arg_type(darg));
@@ -300,13 +293,7 @@ static ffi_type **psi_ffi_struct_type_elements(struct psi_decl_struct *strct) {
        if (s.offset < strct->size) { /* WTF? */
                size_t padding = strct->size - s.offset;
 
-               tmp = realloc(s.els, (padding + s.argc + 1) * sizeof(*s.els));
-               if (tmp) {
-                       s.els = tmp;
-               } else {
-                       free(s.els);
-                       return NULL;
-               }
+               s.els = safe_perealloc(s.els, (padding + s.argc + 1), sizeof(*s.els), 0, 1);
                psi_ffi_struct_type_pad(&s.els[s.nels], padding);
                s.els[s.argc + padding] = NULL;
        }
@@ -324,7 +311,7 @@ static inline ffi_type *psi_ffi_decl_type(struct psi_decl_type *type) {
        switch (real->type) {
        case PSI_T_STRUCT:
                if (!real->real.strct->engine.type) {
-                       ffi_type *strct = calloc(1, sizeof(ffi_type));
+                       ffi_type *strct = pecalloc(1, sizeof(ffi_type), 1);
 
                        strct->type = FFI_TYPE_STRUCT;
                        strct->size = 0;
@@ -363,9 +350,9 @@ static inline ffi_type *psi_ffi_decl_func_array_type(struct psi_decl *fn) {
 
        s.last_arg_pos = -1;
        s.argc = fn->func->var->array_size;
-       s.els = calloc(s.argc + 1, sizeof(*s.els));
+       s.els = pecalloc(s.argc + 1, sizeof(*s.els), 1);
 
-       info->rv_array = calloc(1, sizeof(ffi_type));
+       info->rv_array = pecalloc(1, sizeof(ffi_type), 1);
        info->rv_array->type = FFI_TYPE_STRUCT;
        info->rv_array->size = 0;
        info->rv_array->elements = s.els;
@@ -434,7 +421,7 @@ static inline struct psi_ffi_decl_info *psi_ffi_decl_init(struct psi_decl *decl)
                int rc;
                size_t i, c = psi_plist_count(decl->args);
                struct psi_decl_arg *arg;
-               struct psi_ffi_decl_info *info = calloc(1, sizeof(*info) + 2 * c * sizeof(void *));
+               struct psi_ffi_decl_info *info = pecalloc(1, sizeof(*info) + 2 * c * sizeof(void *), 1);
 
                decl->info = info;
 
@@ -507,7 +494,7 @@ static inline void psi_ffi_callback_init(struct psi_ffi_impl_info *impl_info,
                        decl_info = psi_ffi_decl_init(cb->decl);
                }
 
-               cb_info = calloc(1, sizeof(*cb_info));
+               cb_info = pecalloc(1, sizeof(*cb_info), 1);
                cb_info->impl_info = impl_info;
                cb_info->let_exp = let_exp;
                rc = psi_ffi_prep_closure(&cb_info->closure, &cb_info->code,
@@ -585,7 +572,7 @@ static inline void psi_ffi_callback_dtor(struct psi_let_exp *let_exp) {
 static inline struct psi_ffi_impl_info *psi_ffi_impl_init(struct psi_impl *impl,
                struct psi_context *C) {
        struct psi_ffi_context *context = C->context;
-       struct psi_ffi_impl_info *info = calloc(1, sizeof(*info));
+       struct psi_ffi_impl_info *info = pecalloc(1, sizeof(*info), 1);
        struct psi_let_stmt *let;
        ffi_status rc;
        size_t l = 0;
@@ -652,7 +639,7 @@ struct psi_ffi_extvar_info {
 };
 
 static inline ffi_status psi_ffi_extvar_init(struct psi_decl_extvar *evar) {
-       struct psi_ffi_extvar_info *info = calloc(1, sizeof(*info));
+       struct psi_ffi_extvar_info *info = pecalloc(1, sizeof(*info), 1);
        ffi_status rc;
 
        evar->info = info;
@@ -700,7 +687,7 @@ static inline struct psi_ffi_context *psi_ffi_context_init(struct psi_ffi_contex
        ffi_status rc;
 
        if (!L) {
-               L = malloc(sizeof(*L));
+               L = pemalloc(sizeof(*L), 1);
        }
        memset(L, 0, sizeof(*L));
 
@@ -770,7 +757,7 @@ static zend_function_entry *psi_ffi_compile(struct psi_context *C)
        }
 
        if (C->impls) {
-               zfe = calloc(psi_plist_count(C->impls) + 1, sizeof(*zfe));
+               zfe = pecalloc(psi_plist_count(C->impls) + 1, sizeof(*zfe), 1);
 
                while (psi_plist_get(C->impls, i++, &impl)) {
                        zend_function_entry *zf = &zfe[nf];
@@ -885,7 +872,7 @@ static ZEND_RESULT_CODE psi_ffi_load()
 #if HAVE_INT128
        ffi_type *i128, *u128;
 
-       i128 = calloc(1, 3*sizeof(ffi_type));
+       i128 = pecalloc(1, 3*sizeof(ffi_type), 1);
        i128->type = FFI_TYPE_STRUCT;
        i128->size = 0;
        i128->elements = (ffi_type **) (i128 + 1);
@@ -894,7 +881,7 @@ static ZEND_RESULT_CODE psi_ffi_load()
 
        ffi_type_sint128 = i128;
 
-       u128 = calloc(1, 3*sizeof(ffi_type));
+       u128 = pecalloc(1, 3*sizeof(ffi_type), 1);
        u128->type = FFI_TYPE_STRUCT;
        u128->size = 0;
        u128->elements = (ffi_type **) (u128 + 1);
index cb0aa10..14f0dca 100644 (file)
@@ -96,7 +96,7 @@ zend_internal_arg_info *psi_internal_arginfo(struct psi_impl *impl)
        zend_internal_function_info *fi;
        struct psi_impl_arg *iarg;
 
-       aip = calloc(argc + 1 + !!impl->func->vararg, sizeof(*aip));
+       aip = pecalloc(argc + 1 + !!impl->func->vararg, sizeof(*aip), 1);
 
        fi = (zend_internal_function_info *) &aip[0];
 #ifdef ZEND_TYPE_ENCODE
index 719c551..50bfa31 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Fri Nov  2 08:39:44 2018 */
+/* Generated by re2c 1.1.1 on Fri Nov  2 10:19:25 2018 */
 #line 1 "src/parser.re"
 /*******************************************************************************
  Copyright (c) 2016, Michael Wallner <mike@php.net>.
@@ -44,7 +44,7 @@
 struct psi_parser *psi_parser_init(struct psi_parser *P, psi_error_cb error, unsigned flags)
 {
        if (!P) {
-               P = malloc(sizeof(*P));
+               P = pemalloc(sizeof(*P), 1);
        }
        memset(P, 0, sizeof(*P));
 
@@ -70,7 +70,7 @@ struct psi_parser_input *psi_parser_open_file(struct psi_parser *P, const char *
                return NULL;
        }
 
-       if (!(fb = malloc(sizeof(*fb) + sb.st_size + YYMAXFILL))) {
+       if (!(fb = pemalloc(sizeof(*fb) + sb.st_size + YYMAXFILL, 1))) {
                if (report_errors) {
                        P->error(PSI_DATA(P), NULL, PSI_WARNING,
                                        "Could not allocate %zu bytes for reading '%s': %s",
@@ -110,7 +110,7 @@ struct psi_parser_input *psi_parser_open_string(struct psi_parser *P, const char
 {
        struct psi_parser_input *sb;
 
-       if (!(sb = malloc(sizeof(*sb) + length + YYMAXFILL))) {
+       if (!(sb = pemalloc(sizeof(*sb) + length + YYMAXFILL, 1))) {
                P->error(PSI_DATA(P), NULL, PSI_WARNING,
                                "Could not allocate %zu bytes: %s",
                                length + YYMAXFILL, strerror(errno));
index ab3cdad..ebd1e16 100644 (file)
@@ -41,7 +41,7 @@
 struct psi_parser *psi_parser_init(struct psi_parser *P, psi_error_cb error, unsigned flags)
 {
        if (!P) {
-               P = malloc(sizeof(*P));
+               P = pemalloc(sizeof(*P), 1);
        }
        memset(P, 0, sizeof(*P));
 
@@ -67,7 +67,7 @@ struct psi_parser_input *psi_parser_open_file(struct psi_parser *P, const char *
                return NULL;
        }
 
-       if (!(fb = malloc(sizeof(*fb) + sb.st_size + YYMAXFILL))) {
+       if (!(fb = pemalloc(sizeof(*fb) + sb.st_size + YYMAXFILL, 1))) {
                if (report_errors) {
                        P->error(PSI_DATA(P), NULL, PSI_WARNING,
                                        "Could not allocate %zu bytes for reading '%s': %s",
@@ -107,7 +107,7 @@ struct psi_parser_input *psi_parser_open_string(struct psi_parser *P, const char
 {
        struct psi_parser_input *sb;
 
-       if (!(sb = malloc(sizeof(*sb) + length + YYMAXFILL))) {
+       if (!(sb = pemalloc(sizeof(*sb) + length + YYMAXFILL, 1))) {
                P->error(PSI_DATA(P), NULL, PSI_WARNING,
                                "Could not allocate %zu bytes: %s",
                                length + YYMAXFILL, strerror(errno));
index 699db2c..048305a 100644 (file)
@@ -60,7 +60,7 @@ struct psi_plist *psi_plist_init_ex(size_t size, void (*dtor)(void *)) {
                size = sizeof(void*);
        }
 
-       list = calloc(1, sizeof(*list) + size);
+       list = pecalloc(1, sizeof(*list) + size, 1);
        list->size = size;
        list->dtor = dtor;
 
@@ -88,7 +88,7 @@ void psi_plist_free(struct psi_plist *list) {
 struct psi_plist *psi_plist_copy(struct psi_plist *list, void (*ctor)(void *))
 {
        size_t i;
-       struct psi_plist *copy = calloc(1, sizeof(*list) + list->size + list->count * list->size);
+       struct psi_plist *copy = pecalloc(1, sizeof(*list) + list->size + list->count * list->size, 1);
 
        *copy = *list;
        if (list->count) {
@@ -113,7 +113,7 @@ void **psi_plist_eles(struct psi_plist *list) {
 
 struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) {
        if (list && list->count) {
-               list = realloc(list, sizeof(*list) + list->size + list->count * list->size);
+               list = safe_perealloc(list, list->count + 1, list->size, sizeof(*list), 1);
        }
        if (list) {
                PLIST_CPY(list, PLIST_ELE(list, list->count++), ptr);
@@ -123,7 +123,7 @@ struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) {
 
 struct psi_plist *psi_plist_add_r(struct psi_plist *list, size_t num_eles, void **eles) {
        if (list) {
-               list = realloc(list, sizeof(*list) + list->size + (num_eles + list->count) * list->size);
+               list = safe_perealloc(list, list->count + num_eles + 1, list->size, sizeof(*list), 1);
        }
        if (list) {
                memcpy(PLIST_ELE(list, list->count), eles, num_eles * list->size);
@@ -190,7 +190,7 @@ struct psi_plist *psi_plist_ins(struct psi_plist *list, size_t index, void *ptr)
        if (list) {
                new_count = MAX(list->count + 1, index);
                if (new_count) {
-                       list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
+                       list = safe_perealloc(list, new_count + 1, list->size, sizeof(*list), 1);
                }
                if (list) {
                        PLIST_MOV_EXPAND(list, index);
@@ -207,11 +207,9 @@ struct psi_plist *psi_plist_ins_r(struct psi_plist *list, size_t offset_start, s
        if (list) {
                new_count = MAX(offset_start, list->count) + num_eles;
                if (new_count) {
-                       list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
+                       list = safe_perealloc(list, new_count + 1, list->size, sizeof(*list), 1);
                }
                if (list) {
-                       size_t e;
-
                        PLIST_MOV_EXPAND_EX(list, offset_start, num_eles);
                        PLIST_CPY_R(list, PLIST_ELE(list, offset_start), eles, num_eles);
                        list->count = new_count;
index 316c734..7b303e7 100644 (file)
@@ -41,7 +41,7 @@ struct psi_token *psi_token_init(token_t token_typ, const char *token_txt,
 {
        struct psi_token *T;
 
-       T = calloc(1, sizeof(*T));
+       T = pecalloc(1, sizeof(*T), 1);
        T->type = token_typ;
        T->col = col;
        T->line = line;
@@ -67,7 +67,7 @@ void psi_token_free(struct psi_token **token_ptr) {
 }
 
 struct psi_token *psi_token_copy(struct psi_token *src) {
-       struct psi_token *ptr = malloc(sizeof(*ptr));
+       struct psi_token *ptr = pemalloc(sizeof(*ptr), 1);
 
        *ptr = *src;
 #if PSI_DEBUG_TOKEN_ALLOC
@@ -88,7 +88,7 @@ struct psi_token *psi_token_cat(const char *sep, unsigned argc, ...) {
        va_list argv;
        unsigned i;
        size_t sep_len = sep ? strlen(sep) : 0;
-       struct psi_token *T = malloc(sizeof(*T));
+       struct psi_token *T = pemalloc(sizeof(*T), 1);
        smart_str text = {0};
 
        va_start(argv, argc);
index df267a0..e0c4b07 100644 (file)
@@ -85,39 +85,4 @@ static inline impl_val *deref_impl_val(impl_val *ret_val, struct psi_decl_var *v
        return ret_val;
 }
 
-static inline impl_val *enref_impl_val(void *ptr, struct psi_decl_var *var) {
-       impl_val *val, *val_ptr;
-       unsigned i;
-
-       ZEND_ASSERT(var->arg->var == var);
-#if 0
-       fprintf(stderr, "enref: %s pl=%u:%u as=%u:%u\n",
-                       var->name->val, var->pointer_level, var->arg->var->pointer_level,
-                       var->array_size, var->arg->var->array_size);
-#endif
-       if (!var->pointer_level ){//&& real_decl_type(var->arg->type)->type != PSI_T_STRUCT) {
-               return ptr;
-       }
-
-       val = calloc(var->pointer_level + 1, sizeof(void *));
-       val_ptr = val;
-       for (i = !var->arg->var->array_size; i < var->pointer_level; ++i) {
-#if 0
-               fprintf(stderr, "++\n");
-#endif
-               val_ptr->ptr = (void **) val_ptr + 1;
-               val_ptr = val_ptr->ptr;
-       }
-       val_ptr->ptr = ptr;
-       return val;
-}
-
-static inline impl_val *struct_member_ref(struct psi_decl_arg *set_arg, impl_val *struct_ptr, impl_val **to_free) {
-       void *ptr = (char *) struct_ptr + set_arg->layout->pos;
-#if 0
-       fprintf(stderr, "struct member %s: %p\n", set_arg->var->name->val, ptr);
-#endif
-       return ptr;
-}
-
 #endif
index 9ded0ee..e65efae 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;
@@ -91,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);
index 1a06e43..1afbac0 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_const *psi_const_init(struct psi_impl_type *type, zend_string *name,
                struct psi_impl_def_val *val)
 {
-       struct psi_const *c = calloc(1, sizeof(*c));
+       struct psi_const *c = pecalloc(1, sizeof(*c), 1);
 
        if (name->val[0] == '\\') {
                c->name = zend_string_init(&name->val[1], name->len-1, 1);
index 6f0fff0..89a8f0e 100644 (file)
@@ -32,7 +32,7 @@
 
 struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data)
 {
-       struct psi_cpp_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_cpp_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        switch ((exp->type = type)) {
        case PSI_T_WARNING:
index 8d7dc23..fb32bc0 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_cpp_macro_call *psi_cpp_macro_call_init(zend_string *name,
                struct psi_plist *args)
 {
-       struct psi_cpp_macro_call *call = calloc(1, sizeof(*call));
+       struct psi_cpp_macro_call *call = pecalloc(1, sizeof(*call), 1);
        call->name = zend_string_copy(name);
        call->args = args;
        return call;
@@ -40,7 +40,7 @@ struct psi_cpp_macro_call *psi_cpp_macro_call_init(zend_string *name,
 struct psi_cpp_macro_call *psi_cpp_macro_call_copy(
                struct psi_cpp_macro_call *call)
 {
-       struct psi_cpp_macro_call *copy = calloc(1, sizeof(*copy));
+       struct psi_cpp_macro_call *copy = pecalloc(1, sizeof(*copy), 1);
        copy->name = zend_string_copy(call->name);
        if (call->token) {
                copy->token = psi_token_copy(call->token);
index c26b708..4f21d60 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_cpp_macro_decl *psi_cpp_macro_decl_init(struct psi_plist *sig,
                struct psi_plist *tokens, struct psi_num_exp *exp)
 {
-       struct psi_cpp_macro_decl *macro = calloc(1, sizeof(*macro));
+       struct psi_cpp_macro_decl *macro = pecalloc(1, sizeof(*macro), 1);
        macro->exp = exp;
        macro->sig = sig;
        macro->tokens = tokens;
index 581eadd..5872a32 100644 (file)
@@ -38,7 +38,7 @@
 
 struct psi_decl *psi_decl_init(struct psi_decl_arg *func, struct psi_plist *args)
 {
-       struct psi_decl *d = calloc(1, sizeof(*d));
+       struct psi_decl *d = pecalloc(1, sizeof(*d), 1);
 
        d->func = func;
        d->args = args;
index 794005b..7efa2ef 100644 (file)
@@ -28,7 +28,7 @@
 
 struct psi_decl_abi *psi_decl_abi_init(zend_string *convention)
 {
-       struct psi_decl_abi *abi = calloc(1, sizeof(*abi));
+       struct psi_decl_abi *abi = pecalloc(1, sizeof(*abi), 1);
        abi->convention = convention
                        ? zend_string_copy(convention)
                        : zend_string_init_interned(ZEND_STRL("default"), 1);
index 9f487c3..91a5366 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_decl_arg *psi_decl_arg_init(struct psi_decl_type *type,
                struct psi_decl_var *var)
 {
-       struct psi_decl_arg *arg = calloc(1, sizeof(*arg));
+       struct psi_decl_arg *arg = pecalloc(1, sizeof(*arg), 1);
        arg->token = var->token;
        arg->type = type;
        arg->var = var;
index f060bf3..310b7e3 100644 (file)
@@ -28,7 +28,7 @@
 
 struct psi_decl_enum *psi_decl_enum_init(zend_string *name, struct psi_plist *l)
 {
-       struct psi_decl_enum *e = calloc(1, sizeof(*e));
+       struct psi_decl_enum *e = pecalloc(1, sizeof(*e), 1);
        e->name = zend_string_copy(name);
        e->items = l;
        return e;
index 7c49142..f20eaa6 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_decl_enum_item *psi_decl_enum_item_init(zend_string *name,
                struct psi_num_exp *num)
 {
-       struct psi_decl_enum_item *i = calloc(1, sizeof(*i));
+       struct psi_decl_enum_item *i = pecalloc(1, sizeof(*i), 1);
        i->name = zend_string_copy(name);
        i->num = num;
        return i;
index c6a77aa..4490a0a 100644 (file)
@@ -36,7 +36,7 @@
 
 struct psi_decl_extvar *psi_decl_extvar_init(struct psi_decl_arg *arg)
 {
-       struct psi_decl_extvar *evar = calloc(1, sizeof(*evar));
+       struct psi_decl_extvar *evar = pecalloc(1, sizeof(*evar), 1);
 
        evar->arg = arg;
        return evar;
index c2b8cc1..14076c6 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_decl_struct* psi_decl_struct_init(zend_string *name,
                struct psi_plist *args)
 {
-       struct psi_decl_struct *s = calloc(1, sizeof(*s));
+       struct psi_decl_struct *s = pecalloc(1, sizeof(*s), 1);
        s->name = zend_string_copy(name);
        s->args = args;
        return s;
index 31c49b4..51795b0 100644 (file)
@@ -32,7 +32,7 @@
 
 struct psi_decl_type *psi_decl_type_init(token_t type, zend_string *name)
 {
-       struct psi_decl_type *t = calloc(1, sizeof(*t));
+       struct psi_decl_type *t = pecalloc(1, sizeof(*t), 1);
        t->type = type;
        t->name = zend_string_copy(name);
        return t;
@@ -55,7 +55,7 @@ void psi_decl_type_free(struct psi_decl_type **type_ptr)
 
 struct psi_decl_type *psi_decl_type_copy(struct psi_decl_type *src)
 {
-       struct psi_decl_type *dst = calloc(1, sizeof(*dst));
+       struct psi_decl_type *dst = pecalloc(1, sizeof(*dst), 1);
 
        dst->type = src->type;
        if (src->name) {
index 826dc48..3ab8f69 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_decl_union* psi_decl_union_init(zend_string *name,
                struct psi_plist *args)
 {
-       struct psi_decl_union *u = calloc(1, sizeof(*u));
+       struct psi_decl_union *u = pecalloc(1, sizeof(*u), 1);
        u->name = zend_string_copy(name);
        u->args = args;
        return u;
index 56c525c..49bc58f 100644 (file)
@@ -33,7 +33,7 @@
 struct psi_decl_var *psi_decl_var_init(zend_string *name, unsigned pl,
                unsigned as)
 {
-       struct psi_decl_var *v = calloc(1, sizeof(*v));
+       struct psi_decl_var *v = pecalloc(1, sizeof(*v), 1);
        if (name) {
                v->name = zend_string_copy(name);
                v->fqn = zend_string_copy(name);
@@ -45,7 +45,7 @@ struct psi_decl_var *psi_decl_var_init(zend_string *name, unsigned pl,
 
 struct psi_decl_var *psi_decl_var_copy(struct psi_decl_var *src)
 {
-       struct psi_decl_var *dest = calloc(1, sizeof(*dest));
+       struct psi_decl_var *dest = pecalloc(1, sizeof(*dest), 1);
 
        *dest = *src;
 
index 115da91..7d17756 100644 (file)
@@ -29,7 +29,7 @@
 
 struct psi_free_exp *psi_free_exp_init(zend_string *func, struct psi_plist *vars)
 {
-       struct psi_free_exp *f = calloc(1, sizeof(*f));
+       struct psi_free_exp *f = pecalloc(1, sizeof(*f), 1);
        f->func = zend_string_copy(func);
        f->vars = vars;
        return f;
@@ -99,7 +99,7 @@ bool psi_free_exp_validate(struct psi_data *data, struct psi_free_exp *exp,
        }
 
        /* now check for known vars */
-       exp->let = calloc(psi_plist_count(exp->vars), sizeof(*exp->let));
+       exp->let = pecalloc(psi_plist_count(exp->vars), sizeof(*exp->let), 1);
        for (i = 0; psi_plist_get(exp->vars, i, &free_var); ++i) {
                if (!psi_impl_get_decl_arg(scope->impl, free_var)) {
                        data->error(data, free_var->token, PSI_WARNING,
index 18677af..526f22d 100644 (file)
@@ -28,7 +28,7 @@
 
 struct psi_free_stmt *psi_free_stmt_init(struct psi_plist *exps)
 {
-       struct psi_free_stmt *f = calloc(1, sizeof(*f));
+       struct psi_free_stmt *f = pecalloc(1, sizeof(*f), 1);
        f->exps = exps;
        return f;
 }
index d2c87b9..84bff97 100644 (file)
@@ -31,7 +31,7 @@
 struct psi_impl *psi_impl_init(struct psi_impl_func *func,
                struct psi_plist *stmts)
 {
-       struct psi_impl *impl = calloc(1, sizeof(*impl));
+       struct psi_impl *impl = pecalloc(1, sizeof(*impl), 1);
        size_t i = 0;
        struct psi_token **abstract_stmt;
 
index adbc021..5de6161 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_impl_arg *psi_impl_arg_init(struct psi_impl_type *type,
                struct psi_impl_var *var, struct psi_impl_def_val *def)
 {
-       struct psi_impl_arg *arg = calloc(1, sizeof(*arg));
+       struct psi_impl_arg *arg = pecalloc(1, sizeof(*arg), 1);
        arg->type = type;
        arg->var = var;
        arg->var->arg = arg;
index f78a6b9..fc3bc60 100644 (file)
@@ -31,7 +31,7 @@
 
 struct psi_impl_def_val *psi_impl_def_val_init(token_t t, void *data)
 {
-       struct psi_impl_def_val *def = calloc(1, sizeof(*def));
+       struct psi_impl_def_val *def = pecalloc(1, sizeof(*def), 1);
 
        switch ((def->type = t)) {
        case PSI_T_TRUE:
index d160448..a6f45e6 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_impl_func *psi_impl_func_init(zend_string *name,
                struct psi_plist *args, struct psi_impl_type *type)
 {
-       struct psi_impl_func *func = calloc(1, sizeof(*func));
+       struct psi_impl_func *func = pecalloc(1, sizeof(*func), 1);
 
        func->name = zend_string_copy(name);
        func->args = args ? : psi_plist_init((psi_plist_dtor) psi_impl_arg_free);
index 3517727..be173aa 100644 (file)
@@ -28,7 +28,7 @@
 
 struct psi_impl_type *psi_impl_type_init(token_t type, zend_string *name)
 {
-       struct psi_impl_type *t = calloc(1, sizeof(*t));
+       struct psi_impl_type *t = pecalloc(1, sizeof(*t), 1);
 
        t->type = type;
        t->name = zend_string_copy(name);
index 1fa4173..d3ab4f8 100644 (file)
@@ -30,7 +30,7 @@
 
 struct psi_impl_var *psi_impl_var_init(zend_string *name, bool is_reference)
 {
-       struct psi_impl_var *var = calloc(1, sizeof(*var));
+       struct psi_impl_var *var = pecalloc(1, sizeof(*var), 1);
 
        var->name = zend_string_copy(name);
        var->fqn = zend_string_copy(name);
@@ -41,7 +41,7 @@ struct psi_impl_var *psi_impl_var_init(zend_string *name, bool is_reference)
 
 struct psi_impl_var *psi_impl_var_copy(struct psi_impl_var *var)
 {
-       struct psi_impl_var *cpy = malloc(sizeof(*cpy));
+       struct psi_impl_var *cpy = pemalloc(sizeof(*cpy), 1);
 
        *cpy = *var;
 
index 1a7dcb6..c462120 100644 (file)
@@ -30,7 +30,7 @@
 
 struct psi_layout *psi_layout_init(size_t pos, size_t len, struct psi_layout *bfw)
 {
-       struct psi_layout *l = calloc(1, sizeof(*l));
+       struct psi_layout *l = pecalloc(1, sizeof(*l), 1);
 
        assert(pos + len + (intptr_t) bfw);
 
index 7126b12..4d65df4 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_let_callback *psi_let_callback_init(struct psi_let_func *func,
                struct psi_plist *args, struct psi_plist *cb_args)
 {
-       struct psi_let_callback *cb = calloc(1, sizeof(*cb));
+       struct psi_let_callback *cb = pecalloc(1, sizeof(*cb), 1);
        cb->func = func;
        cb->args = args;
        cb->cb_args = cb_args;
index 8b26431..152e5c8 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_let_calloc *psi_let_calloc_init(struct psi_num_exp *nmemb,
                struct psi_num_exp *size)
 {
-       struct psi_let_calloc *alloc = calloc(1, sizeof(*alloc));
+       struct psi_let_calloc *alloc = pecalloc(1, sizeof(*alloc), 1);
 
        alloc->nmemb = nmemb;
        alloc->size = size;
index fa74b16..97eec8f 100644 (file)
@@ -42,7 +42,7 @@ struct psi_let_exp *psi_let_exp_init_ex(struct psi_decl_var *var,
 
 struct psi_let_exp *psi_let_exp_init(enum psi_let_exp_kind kind, void *data)
 {
-       struct psi_let_exp *let = calloc(1, sizeof(*let));
+       struct psi_let_exp *let = pecalloc(1, sizeof(*let), 1);
        switch (let->kind = kind) {
        case PSI_LET_NULL:
                assert(!data);
index ea2f371..fd8b49f 100644 (file)
@@ -35,7 +35,7 @@
 struct psi_let_func *psi_let_func_init(token_t type, zend_string *name,
                struct psi_impl_var *var)
 {
-       struct psi_let_func *func = calloc(1, sizeof(*func));
+       struct psi_let_func *func = pecalloc(1, sizeof(*func), 1);
        func->type = type;
        func->name = zend_string_copy(name);
        func->var = var;
index b85f0ce..c64856b 100644 (file)
@@ -28,7 +28,7 @@
 
 struct psi_let_stmt *psi_let_stmt_init(struct psi_let_exp *exp)
 {
-       struct psi_let_stmt *let = calloc(1, sizeof(*let));
+       struct psi_let_stmt *let = pecalloc(1, sizeof(*let), 1);
        let->exp = exp;
 
        return let;
index 72f374e..36be5f3 100644 (file)
@@ -36,7 +36,7 @@ struct psi_num_exp *psi_num_exp_init_ternary(token_t op,
                struct psi_num_exp *cond, struct psi_num_exp *truthy,
                struct psi_num_exp *falsy)
 {
-       struct psi_num_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_num_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->op = op;
        exp->data.t.cond = cond;
@@ -49,7 +49,7 @@ struct psi_num_exp *psi_num_exp_init_ternary(token_t op,
 struct psi_num_exp *psi_num_exp_init_binary(token_t op,
                struct psi_num_exp *lhs, struct psi_num_exp *rhs)
 {
-       struct psi_num_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_num_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->op = op;
        exp->data.b.lhs = lhs;
@@ -61,7 +61,7 @@ struct psi_num_exp *psi_num_exp_init_binary(token_t op,
 struct psi_num_exp *psi_num_exp_init_unary(token_t op,
                struct psi_num_exp *u)
 {
-       struct psi_num_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_num_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->op = op;
        exp->data.u = u;
@@ -71,7 +71,7 @@ struct psi_num_exp *psi_num_exp_init_unary(token_t op,
 
 struct psi_num_exp *psi_num_exp_init_num(struct psi_number *n)
 {
-       struct psi_num_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_num_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->op = PSI_T_NUMBER;
        exp->data.n = n;
@@ -82,7 +82,7 @@ struct psi_num_exp *psi_num_exp_init_num(struct psi_number *n)
 struct psi_num_exp *psi_num_exp_init_cast(struct psi_decl_type *typ,
                struct psi_num_exp *num)
 {
-       struct psi_num_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_num_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->op = PSI_T_CAST;
        exp->data.c.typ = typ;
@@ -99,7 +99,7 @@ struct psi_num_exp *psi_num_exp_copy(struct psi_num_exp *exp)
                return NULL;
        }
 
-       cpy = malloc(sizeof(*cpy));
+       cpy = pemalloc(sizeof(*cpy), 1);
        *cpy = *exp;
 
        switch (exp->op) {
index 15505e2..5483196 100644 (file)
@@ -39,7 +39,7 @@
 
 struct psi_number *psi_number_init(token_t t, void *num, unsigned flags)
 {
-       struct psi_number *exp = calloc(1, sizeof(*exp));
+       struct psi_number *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->flags = flags;
        switch (exp->type = t) {
@@ -104,7 +104,7 @@ struct psi_number *psi_number_init(token_t t, void *num, unsigned flags)
 
 struct psi_number *psi_number_copy(struct psi_number *exp)
 {
-       struct psi_number *num = calloc(1, sizeof(*num));
+       struct psi_number *num = pecalloc(1, sizeof(*num), 1);
 
        *num = *exp;
 
index 375f096..d66c55c 100644 (file)
@@ -30,7 +30,7 @@
 struct psi_return_exp *psi_return_exp_init(struct psi_decl_var *func,
                struct psi_plist *args, struct psi_set_exp *set)
 {
-       struct psi_return_exp *exp = calloc(1, sizeof(*exp));
+       struct psi_return_exp *exp = pecalloc(1, sizeof(*exp), 1);
 
        exp->func = func;
        exp->args = args;
index 8ff646d..0c4df36 100644 (file)
@@ -29,7 +29,7 @@
 
 struct psi_return_stmt *psi_return_stmt_init(struct psi_return_exp *exp)
 {
-       struct psi_return_stmt *ret = calloc(1, sizeof(*ret));
+       struct psi_return_stmt *ret = pecalloc(1, sizeof(*ret), 1);
        ret->exp = exp;
        return ret;
 }
index ef4173a..aea0747 100644 (file)
@@ -33,7 +33,7 @@
 
 struct psi_set_exp *psi_set_exp_init(enum psi_set_exp_kind kind, void *data)
 {
-       struct psi_set_exp *val = calloc(1, sizeof(*val));
+       struct psi_set_exp *val = pecalloc(1, sizeof(*val), 1);
 
        switch (val->kind = kind) {
        case PSI_SET_FUNC:
index 7ac2ed5..caf32ff 100644 (file)
@@ -29,7 +29,7 @@
 struct psi_set_func *psi_set_func_init(token_t type, zend_string *name,
                struct psi_decl_var *var)
 {
-       struct psi_set_func *func = calloc(1, sizeof(*func));
+       struct psi_set_func *func = pecalloc(1, sizeof(*func), 1);
 
        func->type = type;
        func->name = zend_string_copy(name);
index 5d31aca..1917571 100644 (file)
@@ -29,7 +29,7 @@
 
 struct psi_set_stmt *psi_set_stmt_init(struct psi_set_exp *exp)
 {
-       struct psi_set_stmt *set = calloc(1, sizeof(*set));
+       struct psi_set_stmt *set = pecalloc(1, sizeof(*set), 1);
        set->exp = exp;
        return set;
 }