X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fimpl_def_val.c;h=fc3bc603bf4c2125f6404e71acd4d0a1b0df10e1;hb=216e7ac3b97aed5a5d65c511dc061c78be90e79d;hp=fe11b269f6e3a02d6883f07fb7db3e5c5ce9f590;hpb=a88d91ed2154bdb6d2198e44c6f3868a5b398287;p=m6w6%2Fext-psi diff --git a/src/types/impl_def_val.c b/src/types/impl_def_val.c index fe11b26..fc3bc60 100644 --- a/src/types/impl_def_val.c +++ b/src/types/impl_def_val.c @@ -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: @@ -44,7 +44,7 @@ struct psi_impl_def_val *psi_impl_def_val_init(token_t t, void *data) /* no break */ case PSI_T_STRING: if (data) { - def->ival.zend.str = zend_string_init(data, strlen(data), 1); + def->ival.zend.str = zend_string_copy(data); } break; @@ -65,9 +65,7 @@ void psi_impl_def_val_free(struct psi_impl_def_val **def_ptr) struct psi_impl_def_val *def = *def_ptr; *def_ptr = NULL; - if (def->token) { - free(def->token); - } + psi_token_free(&def->token); switch (def->type) { case PSI_T_NUMBER: psi_num_exp_free(&def->data.num); @@ -114,12 +112,14 @@ bool psi_impl_def_val_validate(struct psi_data *data, case PSI_T_DOUBLE: val->type = PSI_T_FLOAT; type->type = PSI_T_FLOAT; - strcpy(type->name, "float"); + zend_string_release(type->name); + type->name = zend_string_init_interned(ZEND_STRL("float"), 1); break; default: val->type = PSI_T_INT; type->type = PSI_T_INT; - strcpy(type->name, "int"); + zend_string_release(type->name); + type->name = zend_string_init_interned(ZEND_STRL("int"), 1); break; } psi_num_exp_free(&val->data.num); @@ -160,7 +160,7 @@ bool psi_impl_def_val_validate(struct psi_data *data, data->error(data, val->token, PSI_WARNING, "Invalid default value type '%s', " "expected one of bool, int, float, string.", - type->name); + type->name->val); } return false;