projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix retval
[m6w6/ext-http]
/
php_http_options.c
diff --git
a/php_http_options.c
b/php_http_options.c
index 59b9c5f9fb6daa6fb66d6a23890f93f6f109bc29..d4be512a7e1e9584cdace1a12429054fee90e471 100644
(file)
--- a/
php_http_options.c
+++ b/
php_http_options.c
@@
-12,6
+12,16
@@
#include "php_http_api.h"
#include "php_http_api.h"
+static void php_http_options_hash_dtor(zval *pData)
+{
+ php_http_option_t *opt = Z_PTR_P(pData);
+
+ zval_ptr_dtor(&opt->defval);
+ zend_hash_destroy(&opt->suboptions.options);
+ zend_string_release(opt->name);
+ pefree(opt, opt->persistent);
+}
+
php_http_options_t *php_http_options_init(php_http_options_t *registry, zend_bool persistent)
{
if (!registry) {
php_http_options_t *php_http_options_init(php_http_options_t *registry, zend_bool persistent)
{
if (!registry) {
@@
-21,18
+31,19
@@
php_http_options_t *php_http_options_init(php_http_options_t *registry, zend_boo
}
registry->persistent = persistent;
}
registry->persistent = persistent;
- zend_hash_init(®istry->options, 0, NULL,
(dtor_func_t) zend_hash_destroy
, persistent);
+ zend_hash_init(®istry->options, 0, NULL,
php_http_options_hash_dtor
, persistent);
return registry;
}
ZEND_RESULT_CODE php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata)
{
return registry;
}
ZEND_RESULT_CODE php_http_options_apply(php_http_options_t *registry, HashTable *options, void *userdata)
{
- HashPosition pos;
- zval *val;
+ zval *entry, *val;
php_http_option_t *opt;
php_http_option_t *opt;
- FOREACH_HASH_VAL(pos, ®istry->options, opt) {
+ ZEND_HASH_FOREACH_VAL(®istry->options, entry)
+ {
+ opt = Z_PTR_P(entry);
if (!(val = registry->getter(opt, options, userdata))) {
val = &opt->defval;
}
if (!(val = registry->getter(opt, options, userdata))) {
val = &opt->defval;
}
@@
-44,6
+55,8
@@
ZEND_RESULT_CODE php_http_options_apply(php_http_options_t *registry, HashTable
return FAILURE;
}
}
return FAILURE;
}
}
+ ZEND_HASH_FOREACH_END();
+
return SUCCESS;
}
return SUCCESS;
}
@@
-63,7
+76,7
@@
void php_http_options_free(php_http_options_t **registry)
php_http_option_t *php_http_option_register(php_http_options_t *registry, const char *name_str, size_t name_len, ulong option, zend_uchar type)
{
php_http_option_t *php_http_option_register(php_http_options_t *registry, const char *name_str, size_t name_len, ulong option, zend_uchar type)
{
- php_http_option_t opt
, *dst = NULL
;
+ php_http_option_t opt;
memset(&opt, 0, sizeof(opt));
memset(&opt, 0, sizeof(opt));
@@
-71,22
+84,22
@@
php_http_option_t *php_http_option_register(php_http_options_t *registry, const
opt.suboptions.getter = registry->getter;
opt.suboptions.setter = registry->setter;
opt.suboptions.getter = registry->getter;
opt.suboptions.setter = registry->setter;
- opt.name.h = zend_hash_func(opt.name.s = name_str, opt.name.l = name_len + 1);
+ opt.persistent = registry->persistent;
+ opt.name = zend_string_init(name_str, name_len, registry->persistent);
opt.type = type;
opt.option = option;
opt.type = type;
opt.option = option;
- INIT_ZVAL(opt.defval);
switch ((opt.type = type)) {
switch ((opt.type = type)) {
- case IS_
BOOL
:
- ZVAL_
BOOL(&opt.defval, 0
);
+ case IS_
TRUE
:
+ ZVAL_
TRUE(&opt.defval
);
break;
break;
- case IS_
LONG
:
- ZVAL_
LONG(&opt.defval, 0
);
+ case IS_
FALSE
:
+ ZVAL_
FALSE(&opt.defval
);
break;
break;
- case IS_
STRI
NG:
- ZVAL_
STRINGL(&opt.defval, NULL, 0
, 0);
+ case IS_
LO
NG:
+ ZVAL_
LONG(&opt.defval
, 0);
break;
case IS_DOUBLE:
break;
case IS_DOUBLE:
@@
-98,18
+111,13
@@
php_http_option_t *php_http_option_register(php_http_options_t *registry, const
break;
}
break;
}
- zend_hash_quick_update(®istry->options, opt.name.s, opt.name.l, opt.name.h, (void *) &opt, sizeof(opt), (void *) &dst);
- return dst;
+ return zend_hash_update_mem(®istry->options, opt.name, &opt, sizeof(opt));
}
zval *php_http_option_get(php_http_option_t *opt, HashTable *options, void *userdata)
{
if (options) {
}
zval *php_http_option_get(php_http_option_t *opt, HashTable *options, void *userdata)
{
if (options) {
- zval **zoption;
-
- if (SUCCESS == zend_hash_quick_find(options, opt->name.s, opt->name.l, opt->name.h, (void *) &zoption)) {
- return *zoption;
- }
+ return zend_hash_find(options, opt->name);
}
return NULL;
}
return NULL;