projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix leaks
[m6w6/ext-psi]
/
src
/
types
/
decl_abi.c
diff --git
a/src/types/decl_abi.c
b/src/types/decl_abi.c
index 3db51e6c8be2108853dbff41cd78406bd8b40977..bf05239a00ac9bc36bd7a7ffe7f73e3bc192c1bd 100644
(file)
--- a/
src/types/decl_abi.c
+++ b/
src/types/decl_abi.c
@@
-26,10
+26,12
@@
#include "php_psi_stdinc.h"
#include "data.h"
#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));
{
struct psi_decl_abi *abi = calloc(1, sizeof(*abi));
- abi->convention = strdup(convention);
+ abi->convention = convention
+ ? zend_string_copy(convention)
+ : zend_string_init(ZEND_STRL("default"), 1);
return abi;
}
return abi;
}
@@
-39,24
+41,21
@@
void psi_decl_abi_free(struct psi_decl_abi **abi_ptr)
struct psi_decl_abi *abi = *abi_ptr;
*abi_ptr = NULL;
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)
{
free(abi);
}
}
void psi_decl_abi_dump(int fd, struct psi_decl_abi *abi)
{
- dprintf(fd, "%s", abi->convention);
+ dprintf(fd, "%s", abi->convention
->val
);
}
static const char * const abi_ccs[] = {
"default", /* \ */
"extern", /* > - all the same */
"cdecl", /* / */
}
static const char * const abi_ccs[] = {
"default", /* \ */
"extern", /* > - all the same */
"cdecl", /* / */
- "mscdecl",
"stdcall",
"fastcall",
};
"stdcall",
"fastcall",
};
@@
-66,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) {
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;
}
}
return true;
}
}