X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftypes%2Fdecl_abi.c;h=a92c8ad8b4ab2de14bf03f67d3592987064d0aea;hb=a0f437f26cd0f121ee911a55327a68a3544bf15f;hp=60ad161915914e829bcf77a92215b0cbcad33bc6;hpb=e82854b435ee087e5eb6af926866c9f2d810a5fe;p=m6w6%2Fext-psi diff --git a/src/types/decl_abi.c b/src/types/decl_abi.c index 60ad161..a92c8ad 100644 --- a/src/types/decl_abi.c +++ b/src/types/decl_abi.c @@ -26,10 +26,12 @@ #include "php_psi_stdinc.h" #include "data.h" -struct psi_decl_abi *psi_decl_abi_init(const char *convention) +struct psi_decl_abi *psi_decl_abi_init(zend_string *convention) { - struct psi_decl_abi *abi = calloc(1, sizeof(*abi)); - abi->convention = strdup(convention); + 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); return abi; } @@ -39,17 +41,15 @@ void psi_decl_abi_free(struct psi_decl_abi **abi_ptr) struct psi_decl_abi *abi = *abi_ptr; *abi_ptr = NULL; - if (abi->token) { - free(abi->token); - } - free(abi->convention); + psi_token_free(&abi->token); + zend_string_release(abi->convention); free(abi); } } -void psi_decl_abi_dump(int fd, struct psi_decl_abi *abi) +void psi_decl_abi_dump(struct psi_dump *dump, struct psi_decl_abi *abi) { - dprintf(fd, "%s", abi->convention); + PSI_DUMP(dump, "%s", abi->convention->val); } static const char * const abi_ccs[] = { @@ -65,7 +65,7 @@ bool psi_decl_abi_validate(struct psi_data *data, struct psi_decl_abi *abi) size_t i; for (i = 0; i < sizeof(abi_ccs) / sizeof(char *); ++i) { - if (strcasecmp(abi->convention, abi_ccs[i])) { + if (!strcasecmp(abi->convention->val, abi_ccs[i])) { return true; } }