X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Fdecl_abi.c;h=98721d10ec99c7241a9c5aeefe796eac3cd5ba73;hp=60ad161915914e829bcf77a92215b0cbcad33bc6;hb=d2e0af1718294569a84c3c15616c74e4d55ea579;hpb=e82854b435ee087e5eb6af926866c9f2d810a5fe diff --git a/src/types/decl_abi.c b/src/types/decl_abi.c index 60ad161..98721d1 100644 --- a/src/types/decl_abi.c +++ b/src/types/decl_abi.c @@ -23,13 +23,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #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) + : psi_string_init_interned(ZEND_STRL("default"), 1); return abi; } @@ -39,17 +45,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 +69,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; } }